結果
| 問題 | No.3557 KCPC or KUPC 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-06-20 15:53:59 |
| 言語 | Java (openjdk 25.0.2) |
| 結果 |
AC
|
| 実行時間 | 61 ms / 2,000 ms |
| コード長 | 1,169 bytes |
| 記録 | |
| コンパイル時間 | 4,858 ms |
| コンパイル使用メモリ | 86,292 KB |
| 実行使用メモリ | 41,692 KB |
| 最終ジャッジ日時 | 2026-06-20 15:54:12 |
| 合計ジャッジ時間 | 11,497 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge1_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 30 |
| 部分点2 | 40 % | AC * 30 |
| 部分点3 | 50 % | AC * 30 |
| 合計 | 100 点 |
ソースコード
import java.util.Scanner;
public class No3557 {
static long n;
public static void main(String[] args) {
Scanner scanner = new Scanner((System.in));
n = scanner.nextLong();
long[] a = new long[3] , d = new long[3];
for(int i = 0;i < 3;i++) {
a[i]= scanner.nextLong();
}
for(int i = 0;i < 3;i++) {
d[i] = scanner.nextLong();
}
scanner.close();
long k1 = calc(0 ,0, a[1], a) , k2 = calc(0 , 0, a[1], d);
if(k1 < k2) {
System.out.println("KCPC");
}else if(k1 == k2) {
System.out.println("Same");
}else {
System.out.println("KUPC");
}
}
public static long calc(long sum0, long k0 , long k1 , long[] ad) {
long result = 0;
long sum = getsum(k1, ad);
if(n > sum) {
result = calc (sum ,k1 , 2*k1, ad);
}else if(n == sum) {
result = k1;
}else {
if(getsum(k1-1, ad) < n) {
result = k1;
}else {
result = calc(sum0 ,k0, (long)Math.ceil((k0+k1)/2), ad);
}
}
return result;
}
public static long getsum(long k1 ,long[] ad) {
long d = k1 / ad[1] ,r = k1 % ad[1];
return d*ad[0]*ad[1] + d*(d-1)*ad[1]*ad[2]/2 + (ad[0] + d*ad[2])*r;
}
}