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