循环----短除法(c++)

目录

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
输入
一个整数 n n 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… 所有 位数都是回文数。给出一
个正整数 n n 1 \le n \le 100001 n 10000 ),求出 1,2, \dots ,n1,2,…, n 之中(包括 n   )的回
文数的个数。
输入
任意给定一个正整数 n n 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;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值