本文主要是介绍高富帅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
[1504] 高富帅
- 时间限制: 1000 ms 内存限制: 65535 K
- 问题描述
- NBUT ACM集训队有位十分高,十分富,十分帅,十分有才的十分十高富帅zyvas,他今天给集训队未来十分有希望的你们出了一道十分简单的题目,请看十分简单明了的'输入','输出',然后给出十分有杀伤力的代码A掉这道十分无聊的题目;
- 输入
- 有多个测试数据
每个测试数据输入一个非负整数n(n的长度<=1000) - 输出
- 输出n%9的结果
- 样例输入
-
9 10 11 12345
- 样例输出
-
0 1 2 6
- 提示
-
无
- 来源
-
本站或者转载
- 操作
-
思路:主要通过取模来简化,取模的主要性质有:
① (a + b) % c = (a % c + b % c) % c
②(a * b) % c = (a % c * b % c) % c
那么长度为不超过1000的整数,它的每一位都可以转化成 数字*权 的方式,假设某一位的数字为X,对应的权位10^y,那么(X * 10^y) % 9 = (X % 9 * 10^y % 9),由于10^y % 9 = 1,所以(X * 10^y) % 9 = X % 9,假设输入的数为X1X2...Xn = X1*10^(n-1) X2*10^(n-2)...Xn*10^0, ( X1*10^(n-1) X2*10^(n-2)...Xn*10^0)% 9 = ( X1*10^(n-1)%9 X2*10^(n-2)%9...Xn*10^0%9)= (X1%9+X2%9+...+Xn%9) % 9,即每一位对9取模的和再模9
代码:
#include"cstdio"
#include"cstring"
#include"iostream"
#include"algorithm"using namespace std;int num[1005];
char str[1005];int main()
{while(~scanf("%s",str)){int len = strlen(str);int ans = 0;for(int i = 0;i < len;i++){num[i] = str[i] - '0';ans += num[i] % 9;}printf("%d\n",ans%9);}return 0;
}
这篇关于高富帅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!