C++启蒙题目求解答,在线坐等采纳。

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;
}

这是哪里的题?