这是一个比较简单的题
思路:a+aa+aaa 例 3+33+333+3333 那么只需要将每次的数×10然后再加上原来的个位就行了
先上一个易错版的代码
int main()
{
int a, n;
cin >> a >> n;
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += a;
a = a*10 + a;
}
cout << sum;
return 0;
}
这个代码是错误的 因为在循环中 sum先把a加上了 后面a假如是3 3*10+3=33 目前正确 再一次的时候 就是33*10+33 即330+33=363 这就不对了
这时我们可以引入一个第三方变量 其实正确的应该是每次那个数字*10再加上一个个位
所以
int main()
{
int a, n;
cin >> a >> n;
int sum = 0;
int tmp = 0;
for (int i = 0; i < n; i++)
{
tmp = tmp * 10 + a;
sum += tmp;
}
cout << sum;
return 0;
}
这里的tmp第一次之后加入了a 再一次时×10后再加一个a 这就对了
先想好要做什么 一步一步来实现