您的位置:首页 > 其它

2018年全国多校算法寒假训练营练习比赛(第五场)F-The Biggest Water Problem

2018-02-25 18:37 232 查看
链接:https://www.nowcoder.com/acm/contest/77/F
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述 
给你一个数,让他进行巴啦啦能量,沙鲁沙鲁,小魔仙大变身,如果进行变身的数不满足条件的话,就继续让他变身。。。直到满足条件为止。
巴啦啦能量,沙鲁沙鲁,小魔仙大变身:对于一个数,把他所有位上的数字进行加和,得到新的数。
如果这个数字是个位数的话,那么他就满足条件。
输入描述:
给一个整数数字n(1<=n<=1e9)。
输出描述:
输出由n经过操作满足条件的数
示例1
输入
12
输出
3
说明
12 -> 1 + 2 = 3
示例2
输入
38
输出
2
说明
38 -> 3 + 8 = 11 -> 1 + 1 = 2
题意:循环,直至数字的每一位之和为个位数为止。
思路:将sum化成用字符数组存储每一位的值(字符数组里是倒着存的,不过对这题没什么影响)。
结束之后一想,其实根本用不上字符数组,可以省去存下来的这一步,可以直接加。
代码:#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define IO ios::sync_with_stdio(false);cin.tie(0);
#define INF 0x3f3f3f3f
using namespace std;
char a[10010];
int main()
{
while(cin >> a){
int len = strlen(a);
int sum = 0;
for(int i = 0; i < len; i++){
sum += a[i]-'0';
}
while(sum > 9){
int r = sum, cnt=0;
while(r){
a[cnt++] = r%10;
r = r/10;
}
sum = 0;
for(int i = 0; i < cnt; i++){
sum += a[i];
}
}
cout << sum << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  水题
相关文章推荐