leetcode660. Remove 9
leetcode660. Remove 9
题意:
从整数1开始,删除任何包含9的整数,如9,19,29 ...
所以现在,你将有一个新的整数序列:1,2,3,4,5,6,7,8,10,11,...
给定正整数n,您需要在删除后返回第n个整数。注意1将是第一个整数。
思路:
因为要去除所有的包含9的数。转化成9进制就好了???真是奇巧淫技呀。
ac代码:
C++
class Solution {
public:
int newInteger(int n) {
int res = 0, count = 1;
while(n)
{
res = res + (n % 9) * count;
n /= 9;
count *= 10;
}
return res;
}
};
python
class Solution:
def newInteger(self, n):
"""
:type n: int
:rtype: int
"""
res = 0
count = 1
while n:
res += (n % 9) * count
count *= 10
n //= 9
return res