思路,每次只计算到了当前位的时候,当前位为2的时候有多少可能的数
class Solution { public: int numberOf2sInRange(int n) { if(n < 2){ return 0; }else if(n <= 10){ return 1; } long long xl; long long xr; long long xm; int an = 0; for(long long i = 1; ; i *= 10){ xl = n / i; if(xl == 0){ break; } xm = xl % 10; xl /= 10; xr = n % i; if(xl == 0){ if(xm > 2){ xr = i; an += xr; }else if(xm == 2){ an += xr + 1; } }else{ if(xm > 2){ xr = i; an += xr; }else if(xm == 2){ an += xr + 1; } xr = i; an += xl * xr; } // cout << xl << " " << xr << " " << an << endl; } return an; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)