夢の数を決定
タイトル説明
定義された数、正方形のそれぞれの数を夢、操作を追加したことは夢の中でサイクル数があった場合に発生する
正の整数を入力し、数が夢であるか否かを判定する
例19
1 ^ 9 ^ 2 + 2 = 82
。8 ^ 2 + 2 ^ 2 = 68
^ 6 2 + 2 = 100 8 ^
1 ^ 0 ^ 2 + 2 + 2 ^ 0 = 1
、すなわち数19は夢であります
コーディング
// TODO
ライエスケープ
タイトル説明
マスターは魔法1Sは、50mを移動するが、10マジック過ごすことになります使用して、村、13メートル/秒のアバランシェ日マスター走行速度に住んでいた
マスター初期マナMを、村の距離が安全にS、時間雪崩到着がありますT、午前4時/秒のマスター回復魔法率が、唯一まだ立って回復することができます
エントリー
3非負整数M、S、Tを備え、入力ライン、
輸出
2本の出力線
の出力の最初の行の「はい」、「いいえ」、安全な到着するかどうかを示す
か、2行目の不達が最大距離の到着の出力時間に達します
コーディング
// 代码为自行编写,可能存在 Bug
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int m = scn.nextInt(), s = scn.nextInt(), t = scn.nextInt();
// count:初始魔法值能用几次 tAns:记录使用的时间 sAns:记录走过的路程 flag:此处标记剩余魔法值是否为 4 的倍数
int count = m/10, sAns = 0, tAns = 0, tt = 0, flag = (10-m%10)%10%4 == 0 ? 0 : 1;
if(m%10 > 1 && m%10/4 + flag <= t) { // tt记录下恢复到至少 10 点魔法值所需时间
tt = m%10 / 4 + flag;
}
flag = s%50 == 0 ? 0 : 1; // 此处标记路程是否为 50 的倍数
count = Math.min(count, Math.min(s/50+flag,t));
sAns += count * 50;
tAns += count;
if(tt != 0 && tt+1 <= t-tAns && tt*13 + sAns < s) { // 存在多余魔法值 未被淹没 使用等待的时间直接走不会到达目的地
sAns += 50;
tAns += tt + 1;
}
flag = (s-sAns)%13 == 0 ? 0 : 1; // 此处标记剩余路程为 13 的倍数
count = Math.min((s-sAns)/13+flag, (t-tAns));
sAns += count * 13;
tAns += count;
if(sAns < s) {
System.out.println("No");
System.out.println(sAns);
} else {
System.out.println("Yes");
System.out.println(tAns);
}
}
}
旅行ルート
タイトル説明
今マルコポーロRの都市に行きたい都市、M Nブロックのルートは、ありますが、彼は最短ルートの開発を支援してください。
無向エッジのためのコース、という重い側を確実にしないために
エントリー
最初の入力ラインN、M、R(2 < = N <= 200,1 <= M <= 500,2 <= R <=分(22、N)、
第二の入力ライン番号R都市
M行後ラインX、Yごとに、zは都市および都市Y Z X M(Z <= 10000)との間の距離を表します
輸出
最短距離経路
コーディング
// TODO
つづく...