akizoraのアウトプットブログ

駆け出しエンジニアの拙いアウトプット

CADDi 2018 for Beginners

昨日はCADDi 2018 for Beginnersに参加したので戦歴めも。
復習が全然できてない…
しっかり復習する時間も予定に組み込まないとダメですね。

A問題

入力された文字列を一個ずつサブストして2の数を数える。
3分半くらいでAC。まだ早くかけるなぁ。

B問題

一定の高さと幅をもつ板の数を数える問題。
for文を回して条件を満たす板を数えて終了。   ここらで11分経過。

C問題

TLEから抜け出せなかった。。。
1からPまで全て調べるようなことをしてるからダメな気がするけど、勉強不足でした。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        long N = sc.nextLong();
        long P = sc.nextLong();
        long num = 1;

        for (long i = 1; i <= P; i++) {

            long n = (long) Math.pow(i, N);

            if (n > P) {
                break;
            }
            if (P % i == 0) {
                if (P%n == 0) {
                    num = i;
                }
            } else {
                continue;
            }
        }
        System.out.println(num);
    }
}

まだまだ精進します。

追記

これでACでした。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        long N = sc.nextLong();
        long P = sc.nextLong();
        long num = 1;
        long n = 1;

        if(N==1) {
            System.out.println(P);
            return;
        }

        for (long i = 1; n <= P; i++) {

            if (P%n == 0) {
                num = i;
            }
            n = (long) Math.pow(i+1, N);
        }
        System.out.println(num);
    }
}