题目描述
对给定的一个正整数,按如下规则进行累加得到一个数
比如123
则11+22+3*3=14
又比如2468
则
21+42+63+84=60
即该数第一位数1+该数第二位数2+该数第三位数*3.....
依次类推
输入
一个正整数N<100000
输出
按题目的规则,输出一个权值累加和
样例输入
2468
样例输出
60
#include <iostream>
using namespace std;
int main()
{
int a[20];
int n,i = 0;
int sum = 0;
cin >> n;
while(n)
{
a[i] = n%10;
i++;
n/=10;
}
for (int j = i;j>0;j--)
{
sum += a[j-1] * (i-j+1);
}
cout << sum ;
return 0;
}
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int i,n,m,k,num=0,val=0;
cin>>n;
m=n;
while(m>0)
{
num++;
m=m/10;
}
k=pow(10.0,num-1);
for(i=1;i<=num;i++)
{
val += n/k*i;
n=n%k;
k/=10;
}
cout<<val<<endl;
return 0;
}
先把int型按10进制转字符串
然后循环取出里面的每一个字符
重新转成int
然后sum+=n*(i+1)