本题的解法实在神奇。
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; }