C++启蒙题目求解答,在线坐等采纳。
问题描述:
总时间限制: 1000ms 内存限制: 131072kB
描述
Gx超级喜欢数字7,她认为数字7是她的幸运数字。Lm为了考她,就随机给定数字N,让她求出十进制1~N中在原来进制和八进制下包含7的数字个数。请你能帮她编程解决问题。
输入
输入1个整数N(1<=N<=100000)
输出
输出1~N中在十进制和八进制下包含7的数字个数。
样例输入
样例输入1
20
样例输入2
100000
样例输出
样例输出1
3
样例输出2
30555
提示
【样例解释】
7(10)、17(10)包含数字7;
7(10)->7(8)、15(10)->17(8)包含数字7,所以一共有3个数字包含7。
答
全完了,我算出来得69445...
答
#include <iostream>
using namespace std;
int f1(int num) //判断十进制
{
int h=0;
while(num>0)
{
h=num%10;
if(h==7)
return 1;
num/=10;
}
return 0;
}
int f2(int num) //判断八进制
{
int h=0,s=0;
while(num>0)
{
h=num%8;
if(h==7)
return 1;
num/=8;
}
return 0;
}
int main()
{
int n=0,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
{
sum+=f1(i)+f2(i);
if(f1(i)==1 && f2(i)==1) //如果都返回1就减去重复加的1
sum--;
}
cout<<sum<<endl;
return 0;
}
答
这是哪里的题?