#include <iostream>
#include <math.h>
using namespace std;
bool panduan(int i){//判断不含7
int b[100];
int j=0;
while(i){
int ret=i%10;
b[j]=ret;
j++;
i/=10;
}
for(int r=0;r<sizeof(b)-1;r++){
if(b[r]==7)
return false;
}
return true;
}
int rbajinzhi(int i){//将十进制转换成八进制
int o=0;
int j=0;
int n=0;
if(i<=7)
o=i;
else
{
while(i>7){
j=i%8;
i=i/8;
o=j*pow(10,n)+o;
n++;
}
}
o=o+i*pow(10,n);
return o;
}
int main(){
int N;
cin>>N;
int count=0;
for(int i=1;i<=N;i++){
if(panduan(i)||panduan(rbajinzhi(i))){
count++;
}
}
cout<<count;
return 0;
}
不需要使用数组,在你的代码上改了改,一个函数判断十进制是否含7,一个函数判断八进制是否含7
#include <iostream>
#include <math.h>
using namespace std;
bool panduan(int i){//判断十进制不含7
while(i){
if(i%10==7)
return false;
i/=10;
}
return true;
}
int rbajinzhi(int i){//判断八进制不含7
while(i){
if(i%8==7)
return false;
i/=8;
}
return true;
}
int main(){
int N;
cin>>N;
int count=0;
for(int i=1;i<=N;i++){
if(panduan(i)&&rbajinzhi(i)){
count++;
}
}
cout<<count;
return 0;
}