/* 求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值, 其中a是一个数字,为2。 例如,n=5时=2+22+222+2222+22222,n由键盘输入 */ #include <stdio.h> main() { int sn,a,n,i,sum=0; scanf("%d",&n); a=2; sn=0; for(i=1;i<=n;i++) { sum=sum*10+a; sn+=sum; } printf("%d",sn); }
#include<stdio.h> int main() { int n,sum=0,sn=0; scanf("%d",&n); for(int i=0;i<n;i++){ sum+=2*pow(10,i); sn=sn+sum; } printf("%d",sn); return 0; }
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int i,n,sn; scanf("%d",&n); sn=0; for(i=0;i<n;i++) sn+=2*(pow(10,i+1)-1)/9; printf("%d",sn); }
#include<stdio.h> int main() { int n,Sn,i,s1; Sn=0; scanf("%d",&n); while(n>0){ for(i=1,s1=1;i<=n;i++){ s1=s1*i; } n=n-1; Sn=s1+Sn; } printf("%d\n",Sn); } 求大佬帮我看看这个错哪里了
有人可以再解释一下吗?还是没懂
zxdf 2022-05-20 22:08:21 |
相当于把每个位的数先计算好再填到Sn上去,先填最高位的2,再填次高位的4,依此类推
kk 2023-02-02 09:34:48 |
他这个解法也挺有意思的,n=1,sum=2,sum个位数有1个2,n等于2,sum=2+22,sum个位数有2个2,十位有1个2,sum=2*2+2*1*10,n等于3,sum=2+22+222,个位3个2,十位2个2,百位1个2,sum=2*3+2*2*10+2*1*100
kk 2023-02-02 10:16:56 |
想法是上面的写法,你看不懂是因为你没看懂他是怎么实现这个过程的,首先,按照上面的思路,叠加起来后,百分位的2的个数永远比十分位2的个数少1个,十分位2的个数又永远比个位2的个数少1个,利用这个规律,从n=2来看,i=1时,sum=2,i=2时,证明十分位有1个2,个位有2个2,把i=1时,sum=2的结果乘以2,就得到了十分位的1个2,然后再计算个位2个2,在把结果相加;同理,当n=3时,在i=2的情况下,sum=24,i=3时,百分位应该是1个2,十分位2个2,所以把i=2情况下得到的sum=24*10,就得到240,就解决了百分位和十分位,然后再加上剩下的个位的3个2,就是结果,这样就好理解了
junzhe051129 2023-07-03 18:29:36 |
@dotcpp0639593 说的太清楚了,佩服佩服
悠游 2023-07-20 14:21:26 |
你指那个加号吗,实际上就是sum=sum+2*(i+1)
剑仙 2023-11-07 19:19:43 |
我理解的是求n个个位数的2加上前面的数