题目链接:https://www.luogu.org/problemnew/show/P1062
题意理解
1∗301∗31+0∗301∗31+1∗301∗32+0∗31+0∗30 1 ∗ 3 0 1 ∗ 3 1 + 0 ∗ 3 0 1 ∗ 3 1 + 1 ∗ 3 0 1 ∗ 3 2 + 0 ∗ 3 1 + 0 ∗ 3 0
然后就很显然,这是个二进制嘛,就把 N N 转换成二进制,然后乘上 的对应次幂,然后求和。具体看代码。
代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
FastScanner fs = new FastScanner();
int K = fs.nextInt();
int N = fs.nextInt();
long res = 0;
String temp = Integer.toBinaryString(N);
int len = temp.length();
for(int i = 0; i < len; i++) {
res += (temp.charAt(i) - '0') * Math.pow(K, len - i - 1);
}
System.out.println(res);
}
public static class FastScanner {
private BufferedReader br;
private StringTokenizer st;
public void eat(String s) {
st = new StringTokenizer(s);
}
public FastScanner() {
br = new BufferedReader(new InputStreamReader(System.in));
eat("");
}
public String nextLine() {
try {
return br.readLine();
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
public boolean hasNext() {
while(!st.hasMoreTokens()) {
String s = nextLine();
if(s == null) {
return false;
}
eat(s);
}
return true;
}
public String nextToken() {
hasNext();
return st.nextToken();
}
public int nextInt() {
return Integer.valueOf(nextToken());
}
}
}