求Sn=a+aa+aaa+…+aa…a(n個a)之值,其中a是一個數字,n表示a的位數,例如:2+22+222+2222+22222(此時n=5),n由鍵盤輸入。
1⃣️第一步,首先試想如何將2轉變爲22,即2x10+2=22,則可以寫出tmp=tmp*10+a,經過循環最終得到含有五個2的22222.
#include <iostream>
//得到數字aaaaa...a,例如(2,5)->22222
int GetNum(int a,int n)
{
int tmp =0;
for(int i=0;i<n;i++)
{
tmp=tmp*10+a;
}
return tmp;
}
int main()
{
printf("%d\n",GetNum(2,5));
return 0;
}
輸出結果:22222
代碼塊1:
int GetNum(int a,int n)
{
int tmp =0;
for(int i=0;i<n;i++)
{
tmp=tmp*10+a;
}
return tmp;
}
int main()
{
printf("%d\n",GetNum(2,5));
return 0;
}
2⃣️在第一次寫的代碼的基礎上增加一個求和函數,首先由第一步的函數得到每一輪的tmp,再將tmp的值逐個相加。本題即2+22+222=246。
#include <iostream>
//得到數字aaaaa...a,例如(2,5)->22222
int GetNum(int a,int n)
{
int tmp =0;
for(int i=0;i<n;i++)
{
tmp=tmp*10+a;
}
return tmp;
}
int Sum(int a,int n)
{
int tmp =0;
for(int i=0;i<=n;i++)
{
tmp+= GetNum(a,i);
}
return tmp;
}
int main()
{
printf("%d\n",Sum(2,3));
return 0;
}
輸出結果:246
源代碼如下:
#include
//得到數字aaaaa…a,例如(2,5)->22222
int GetNum(int a,int n)
{
int tmp =0;
for(int i=0;i<n;i++)
{
tmp=tmp*10+a;
}
return tmp;
}
int Sum(int a,int n)
{
int tmp =0;
for(int i=0;i<=n;i++)
{
tmp+= GetNum(a,i);
}
return tmp;
}
int main()
{
printf("%d\n",Sum(2,3));
return 0;
}