/*禁止用7:求从1-n中有多少个能用的数字。
这个十进制数位拆解,他实际对应的是九进制的数。然后转换成十进制的结果。*/
#include <iostream>
using namespace std;
int main() {int T;cin >> T;while (T--) {long long x;cin >> x;long long ans = 0, rp = 1;//rp权重,因为7要被割舍,所以每一个位置上的权重只有9if(x%10!=7){ans++;//个位从0开始}while (x > 0) {int t = x % 10;//数是十进制的,每一位拆出来的是个九进制。所以综上,九进制转十进制if(t==7) ans = 0;//排除掉前面的所有内容else if (t > 7) t--;//涉及到了7的问题,7要跳过,那么要减一。ans += t * rp;//因为结果是逆序,所以从个位往上,即权重在不断*9变大。x /= 10;rp = rp * 9;//所以进行*9的操作。}cout << ans << endl;}return 0;
}