本题的解法实在神奇。
7不存在,那么可能的数位就有:
1,2,3,4,5,6,8,9,0
九种情况。
那么就可以看作是0-8,也就是九进制数。
然后将输入的数看作九进制数转成十进制就好了。
#include<iostream>
#define ll long long int
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define dwn(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
ll a[320];
int main(){
int n;
cin>>n;
rep(i,1,n){
if(i-1)cout<<endl;
ll cu,ans;
cin>>cu;
ans=0;
int cur=0;
while(cu)
a[++cur]=cu%10,cu/=10;
dwn(j,cur,1){
if(a[j]>7)a[j]--;
ans=ans*9+a[j];
}
cout<<ans;
}
return 0;
}
京公网安备 11010502036488号