用c++代码写蒜头君认为一个正整数的幸运度是把它的每一位取出来,对从左数第 ii 位的数乘上 ii ,再把每一位算出的乘积加起来的结果。比如 98769876 的幸运度就是 9 \times 1 + 8 \times 2 + 7 \times 3 + 6 \times 4 = 709×1+8×2+7×3+6×4=70 。 现在蒜头君想让你帮忙算算正整数 NN 的幸运度。 输入格式 输入一行,包含一个整数 N(1 \leq N < 10 ^ {100000})N(1≤N<10 100000 ) 。 输出格式 输出一行,包含一个整数,表示 NN 的幸运度。 数据范围 对于 60%60% 的数据, 1 \leq N < 10 ^ 91≤N<10 9 对于 80%80% 的数据, 1 \leq N < 10 ^ {18}1≤N<10 18 对于 100%100% 的数据,1 \leq N < 10 ^ {100000}1≤N<10 100000
时间: 2024-02-15 15:03:35 浏览: 37
好的,以下是用 C++ 实现的代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string n;
cin >> n;
int len = n.size();
long long res = 0;
for(int i = 0; i < len; i++) {
int num = n[i] - '0';
res += num * (i + 1);
}
cout << res << endl;
return 0;
}
```
代码思路很简单,就是遍历整个字符串,将每一位转为数字并乘上对应的位数,再将所有结果相加,最终输出即可。需要注意的是,res 的类型要开 long long,因为最终结果可能很大。
相关问题
帮我用c++写一段代码,要求是输入一个整数,从高位开始逐位分割并输出它的各位数字
以下是一个简单的 C++ 代码,可以实现输入一个整数,从高位开始逐位分割并输出它的各位数字:
```c++
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入一个整数:";
cin >> n;
cout << "它的各位数字为:";
while (n > 0) {
cout << n % 10 << " ";
n /= 10;
}
cout << endl;
return 0;
}
```
代码中首先让用户输入一个整数,然后使用 while 循环逐位分割它的各位数字,并输出。其中 `%` 运算符表示取模运算,即取一个数的个位数字;`/` 运算符表示整除运算,即将一个数的个位数字去除。
输入一个正整数,然后把该整数的每一位数字从高位到低位顺序输出,每个数字占一行。c++代码
#include <stdio.h>
int main() {
int num, digit, count = , i;
int nums[10]; // 存储每一位数字
printf("请输入一个正整数:");
scanf("%d", &num);
// 分离每一位数字
while (num > ) {
digit = num % 10;
nums[count] = digit;
count++;
num /= 10;
}
// 从高位到低位输出每一位数字
for (i = count - 1; i >= ; i--) {
printf("%d\n", nums[i]);
}
return ;
}