循环----短除法(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 。
输入
一个整数 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;
}
更多推荐



所有评论(0)