解题思路:
我看了多数解题人选择直接按照题目描述进行代码编写,采用了x*10+2的方法。实际上这个题目是可以一眼看出,
2
2 2
2 2 2
2 2 2 2
2 2 2 2 2
万 千 百 十 个
所以只要将各个数位上的对应的值相加,乘于位权即可算出答案,而位权即个,十,百,千,万是10倍递推,2的个数也有相应的规律。
以上是个人见解。
注意事项:
相加之后的数值sum或许会很大,所以用 long long int型防止溢出。
参考代码:
#include<iostream> #include<cstdio> using namespace std; int main() { int k=1,n; long long int sum=0; scanf("%d",&n); for(int i=n;i>0;i--) { sum+=i*2*k; k*=10; } printf("%lld",sum); return 0; }
0.0分
4 人评分
C二级辅导-等差数列 (C语言代码)浏览:1239 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:696 |
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:768 |
剪刀石头布 (C语言代码)不知道怎么直接在scanf中用枚举变量浏览:1365 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:667 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:701 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:579 |
1126题解浏览:613 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:1216 |
关于float,double变量的几点说明浏览:1863 |