cpython3


私信TA

用户名:smartZhou

访问量:80443

签 名:

等  级
排  名 35
经  验 14015
参赛次数 1
文章发表 99
年  龄 0
在职情况 学生
学  校
专  业 计算机科学与技术

  自我简介:

解题思路:

本题输入的数的范围是正整数1到pow(2,32),如此大的数,一般的数据类型(int long float double)还存不下。

所以用string字符串类型来保存输入的数。(C语言可以使用char *)

Tom数就是自身各位数字之和。

求字符串的各位数字之和可以倒序加,把最后一位字符转换成数字,一位一位的向前推进,结果放在sum变量中,不用考虑进位,非常简单。

注意事项:
注意OJ系统的数据测试是一组一组的测试,不是说让你把所有的数据全部输入,再把数据全部输出


参考代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string a;
	int aa,sum;
	while(cin>>a)
	{
		sum=0;
		int lena=a.size();        //字符串的长度
		while(lena>0)
		{
			aa=a[lena-1]-'0'; //转换成数字
			sum+=aa;          //累加
			lena--;           //向前推进
		}
		cout<<sum<<endl;
	}	
	return 0; 
}

测试环境:

Windows 10 China Huawei Source Insight 4.0 

Linux  Debain Ubuntu/Kali g++

程序测试:

微信图片_20190109182637.png

 

0.0分

11 人评分

  评论区

#include<stdio.h>
int main()
{
	int i;
	int sum=0;
	int n,n1=0,n2=0,n3=0,n4=0,n5=0,n6=0,n7=0,n8=0,n9=0;
	scanf("%d",&n);
	while(n%10!=0)
	{
		n=n-1;
		n1++;
	}
	while(n%100!=0)
	{
		n=n-10;
		n2++;
	}
	while(n%1000!=0)
	{
		n=n-100;
		n3++;
	}
	while(n%10000!=0)
	{
		n=n-1000;
		n4++;
	}
	while(n%100000!=0)
	{
		n=n-10000;
		n5++;
	}
	while(n%1000000!=0)
	{
		n=n-100000;
		n6++;
	}
	while(n%10000000!=0)
	{
		n=n-1000000;
		n7++;
	}
	while(n%100000000!=0)
	{
		n=n-10000000;
		n8++;
	}
	while(n%1000000000!=0)
	{
		n=n-100000000;
		n9++;
	}
	sum=n1+n2+n3+n4+n5+n6+n7+n8+n9;
	printf("%d",sum);
	ret
2024-03-21 22:02:44
怎么样算一组一组测试?我的代码提交说输出超限,可是看题干的输入也没有终止条件呀
#include<stdio.h>
int main()
{
	long long n,sum;
	while(scanf("%lld",&n)) 
	{sum=0;
		while(n!=0)
		{ 
		  sum=sum+n%10;
		  n=n/10;	
		}
	printf("%lld\n",sum);
	}
	
	return 0;
	
 }
2024-03-01 12:48:49
  • «
  • 1
  • »