Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.*;
- public class GreatDeceiver {
- void solve() throws IOException {
- long n = nextLong(), k = nextLong();
- long counter = 0;
- long index = (long) Math.floor(Math.log(n) / Math.log(k)) + 1;
- for (; index > 0; --index) {
- long number = (long) Math.pow(k, index - 1);
- long factor = n / number;
- if (factor == 0 || index % 2 == 1) {
- counter += factor * (long) Math.pow(k, index / 2);
- n -= factor * number;
- if (n == 0) {
- counter++;
- break;
- }
- } else {
- counter += (long) Math.pow(k, index / 2);
- break;
- }
- }
- out.println(counter);
- }
- void run() throws IOException {
- reader = new BufferedReader(new InputStreamReader(System.in));
- out = new PrintWriter(new OutputStreamWriter(System.out));
- reader = new BufferedReader(new FileReader("great.in"));
- out = new PrintWriter(new FileWriter("great.out"));
- tokenizer = null;
- solve();
- reader.close();
- out.flush();
- }
- public static void main(String[] args) throws IOException {
- new GreatDeceiver().run();
- }
- BufferedReader reader;
- StringTokenizer tokenizer;
- PrintWriter out;
- int nextInt() throws IOException {
- return Integer.parseInt(nextToken());
- }
- long nextLong() throws IOException {
- return Long.parseLong(nextToken());
- }
- double nextDouble() throws IOException {
- return Double.parseDouble(nextToken());
- }
- String nextToken() throws IOException {
- while (tokenizer == null || !tokenizer.hasMoreTokens()) {
- tokenizer = new StringTokenizer(reader.readLine());
- }
- return tokenizer.nextToken();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement