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

链接: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;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值