|
地板
楼主 |
发表于 2018-4-20 20:26:07
|
只看该作者
老师在这里用一个很直观的但是有点笨的方法,先将数字写到数组,1个1,2个2,3个3,4个4,然后去累加前k个,很有些浪费,但是很直观。
- #include<iostream>
- using namespace std;
- int s,k,a[11000],i,j,t;
- int main()
- {
- t=i=1;///初始值
- while (t<=10000)
- {
- for (j=1; j<=i; j++)
- {
- a[t]=i; ///写进数组 很直观
- t++;
- }
- i++; ///写下一次数字
- }
- ///for (i=1; i<=100; i++) cout<<a[i]<<' ';
- cin>>k;
- s=0;for (i=1;i<=k;i++) s=s+a[i]; ///前k项求和
- cout<<s;
- return 0;
- }
复制代码
第二种做法,直接一遍数一边加,注意我的循环的跳出技巧和边界条件,不熟悉的同学做做这个二阶等差数列的题目
- #include<iostream>
- using namespace std;
- int s,k,l,i,j,t;
- int main()
- {
- cin>>k;
- s=t=i=0;///初始值 t表示现在是第几个数,i表示这个数值是几 s表示总和
- while (t<k) ///找到第k个的i
- {
- for(j=1; (j<=i) && (t<k); j++) ///注意这个出口的写法!
- {
- t++;
- ///cout<<i<<' ';
- s+=i;
- }
- i=i+1;
- }
- cout<<s;
- return 0;
- }
复制代码
加强版的题目 “ http://www.hsyit.cn/forum.php?mo ... &extra=page%3D1 |
|