目录

1389 数据分析
1750 有0的数
1962 数值计算
1121 “倒”数
1469 数的统计
1511 数字之和为13的整数
1149 回文数个数
1846 阿尔法乘积
1389 - 数据分析
题目描述
某军事单位为了保证信息的安全性,决定采用特殊的加密方法来传递信息,该方法的操作方式为,如果
要传递2个数字信息给友军,会直接传递给友军一个整数n(
n是一个10位以内的整数),该整数的长度
代表要传递的第一个数字信息,分解出该整数的每一位,如果该位是偶数,那么将这这一位加到总和上
去,代表要传递的第二个数字信息。请你编写一个程序,从接收到的数字n中获取这2个数字信息。
比如:军事单位传递的数字为12345678,则希望向友军传递的2个数字就是8(共有8位)和20
(2+4+6+8=20)
输入
一个整数n(n<=999999999)
输出
两个整数,用空格隔开
#include <iostream>
using namespace std;
int main()
{
	long long n,cnt,sum,a;
	cin>>n;
	a = n;
	cnt = 0;
	sum = 0;
	while(n!=0)
	{
		n = n/10;
		cnt++;
	}
	int cnt2 = 0;
	while(a!=0)
	{
		cnt2++;
		if(cnt%2==0)
		{
			if(cnt2%2==1)
			{
				sum = sum+a%10;
			}
		}
		else
		{
			if(cnt2%2==0)
			{
				sum = sum+a%10;
			}
		}
		a = a/10;
	}
	cout<<cnt<<endl<<sum;
	return 0;
}

1750 - 有0的数
题目描述
请求出1~n中含有数字0的数,有多少个?
输入
一个整数n(n<=999)
输出
一个整数,代表1~n中含有数字0的数的个数。
#include <iostream> 
using namespace std;
int main()
{
	int n,q,a,cntws,cntz,a1,a2,a3;
	cin>>n;
	cntws = 0;
	cntz = 0;
	a = 1;
	q = n;
	while(q!=0)
	{
		q=q/10;
		cntws++;
	}
	if(cntws==1)
	{
		while(a<=n)
		{
			a1 = a/1%10;
			if(a1==0)
			{
				cntz++;
			}
			a++;
		}
	}
	else if(cntws==2)
	{
	    while(a<=n)
	    {
		    a1 = a/1%10;
		    a2 = a/10%10;
		    if(a2!=0)
		    {
		    	if(a1==0||a2==0)
	    	    {
	        		cntz++;
	        	}
		    }
		    a++;
	    }	
	}
	else
	{
	    while(a<=n)
	    {
		    a1 = a/1%10;
		    a2 = a/10%10;
		    a3 = a/100%10;
		    if(a2!=0&&a3==0)
		    {
		    	if(a1==0||a2==0)
	    	    {
	        		cntz++;
	        	}
		    }
		    else if(a3!=0)
		    {
		    	if(a1==0||a2==0||a3==0)
	        	{
	        		cntz++;
	        	}
		    }
		    a++;
	    }	
	}
	cout<<cntz<<endl;
	return 0;
}

1962 - 数值计算
题目描述
给出一个不多于5位的非负整数,要求
1、求出它是几位数
2、分别输出每一位数字
3、按逆序输出各位数字,例如原数为321,应输出123
输入
一个不大于5位的正整数
输出
三行
第一行 位数
第二行 用空格分开的每个数字
第三行 按逆序输出这个数
#include <iostream> 
using namespace std;
int main()
{
	int n,sumd,cnt,a,q;
	cin>>n;
	sumd = 0;
	q = n;
	cnt = 0;
	while(n!=0)
	{
		a = n%10;
		sumd = sumd*10+a;
		n = n/10;
		cnt++;
	}
	cout<<cnt<<endl;
	n = q;
	q = sumd;
	while(sumd!=0)
	{
		a = sumd%10;
        sumd = sumd/10;
        cout<<a<<" ";
	}
	cout<<" "<<endl;
	cout<<q<<endl;
	return 0;
}

1121 - “倒”数
题目描述
输入一个正整数N( 0 < N < 2147483647 ),将这个数倒着合成一个新数后输出。
比如:543,倒过来是345(请注意:34500,倒过来是543,不是00543)!
输入
一行,一个正整数N。
输出
一行,一个正整数。
#include <iostream> 
using namespace std;
int main()
{
	int n,sumd,cnt,a,q;
	cin>>n;
	sumd = 0;
	q = n;
	cnt = 0;
	while(n!=0)
	{
		a = n%10;
		sumd = sumd*10+a;
		n = n/10;
		cnt++;
	}
	cout<<sumd<<endl;
	return 0;
}

1469 - 数的统计
题目描述
试计算在区间1到n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在 1到11中,即在
1,2,3,4,5,6,7,8,9,10,11中,数字1出现了4次。再比如:1到11中,数字0只出现了1次。
输入
2个整数n和x之间用一个空格隔开。(n是一个int范围内的整数)
输出
1个整数,表示x出现的次数。
#include <iostream>
using namespace std;
int main()
{
	int n,x,a,q,ns1,cnt;
	cin>>n>>x;
	cnt = 0;
	a = 1;
	while(a<=n)
	{
		q = a;
		while(q!=0)
		{
	    	ns1 = q%10;
	    	if(ns1==1)
	    	{
	    	    cnt++;	
	    	}
	    	q = q/10;
		}
		a++;
	}
	cout<<cnt;
	return 0;
}

1511 - 数字之和为13的整数
题目描述
求出 1~n 范围内的整数,使其数字之和为 13,请问这样的数有多少个?
例如:数 85 ,其数字之和为 8+5=138+5=13 ;数 373,其数字之和为 3+7+3=133+7+3=13 。
输入
一个整数 nn(n≤10000000);
输出
输出一个整数,代表符合条件数的总个数。
#include <iostream>
using namespace std;
int main()
{
	int n,sum,nn,a,cnt;
	cin>>n;
	sum = 0;
	cnt = 0;
	a = 1;
	while(a<=n)
	{
		while(n!=0)
	    {
    		nn = n%10;
    		n = n/10;
    		sum = sum+n;
    	}
    	if(sum = 15)
    	{
    		cnt++;
    	}
		a++;
	}
	cout<<cnt<<endl;
	return 0;
}

1149 - 回文数个数
题目描述
一个正整数,正读和反读都相同的数为回文数。
例如 2222 , 131131 , 24422442 , 3707337073 , 66 ,\dots… 所有 1 位数都是回文数。给出一
个正整数 nn( 1 \le n \le 100001≤n≤10000 ),求出 1,2, \dots ,n1,2,…,n 之中(包括 1 和 n )的回
文数的个数。
输入
任意给定一个正整数 nn ( 0 \lt n \le 100000<n≤10000 )
输出
一个正整数,表示[ 1,n1,n ]之间的回文数的个数。
#include <iostream>
using namespace std;
int main()
{
	int n,sum,a,q,cnt,z;
	z = 1;
	cin>>n;
	cnt = 0;
	while(z<=n)
	{
		q = z;
    	sum = 0;
    	while(z!=0)
    	{
    		a = z%10;
    		sum = sum*10+a;
    		z = z/10;
    	}
    	if(q==sum)
    	{
    		cnt++;
    	}
    	z = q;
    	z++;
	}
	cout<<cnt;
	return 0;
}

1846 - 阿尔法乘积
题目描述
计算一个整数的阿尔法乘积。对于一个整数 x* 来说,它的阿尔法乘积是这样来计算的:如果 x是一个个
位数,那么它的阿尔法乘积就是它本身;否则的话,x* 的阿尔法乘积就等于它的各位非 0 的数字相乘所
得到的那个整数的阿尔法乘积。
例如:4018224312 的阿尔法乘积等于 8 ,它是按照以下的步骤来计算的:
4×1×8×2×2×4×3×1×2 → 3072 →3×7×2 → 42 → 4×2 → 8;
编写一个程序,输入一个正整数(该整数的值在 int 范围内),输出它的阿尔法乘积。
输入
输入只有一行,即一个正整数。
输出
输出相应的阿尔法乘积。
#include <iostream>
using namespace std;
int main()
{
	int n,a,sum;
	cin>>n;
	while(n>=9)
	{
		sum = 1;
		while(n!=0)
		{
			a = n%10;
			if(a!=0)
			{
				sum = sum*a;
			}			
			n = n/10;
		}
		n = sum;
	}
	cout<<n;
	return 0;
}

更多推荐