JavaブルーブリッジカップグループBテスト問題G:8つの合計
制限時間:1.0秒メモリ制限:512.0MBこの質問の合計スコア:20ポイント
【問題点の説明】
正の整数nが与えられた場合、8乗1、8乗2、8乗3、8乗4 、、、およびモジュロ123456789の結果を求めます。それらの中で、modは
残りを取ることを意味します。
【入力形式】入力
の1行目に整数nが含まれています。
【出力形式】
回答を表す整数を含む1行を出力します。
[サンプル入力]
2
[サンプル出力]
257
[サンプル入力]
987654
[サンプル出力]
43636805
[評価ユースケースのスケールと規則]
評価ユースケースの20%について、1≤n≤20 。
評価のユースケースの60%で、1≤n≤1000。
すべての評価ユースケースで、1≤n≤1000000。
/** 试题 G: 八次求和 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
【问题描述】 给定正整数 n, 求 1^8 + 2^8 + · · · + n^8 mod 123456789 。其中 mod 表示取 余。
【输入格式】 输入的第一行包含一个整数 n。
【输出格式】 输出一行,包含一个整数,表示答案。
【样例输入】 2
【样例输出】 257
【样例输入】 987654
【样例输出】 43636805
【评测用例规模与约定】
对于 20% 的评测用例,1 ≤ n ≤ 20。
对于 60% 的评测用例,1 ≤ n ≤ 1000。
对于所有评测用例,1 ≤ n ≤ 1000000。*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int mod=123456789;
Scanner s = new Scanner(System.in);
int n=s.nextInt();long result=0;
for(long i=1;i<=n;i++){
//遍历1~n
long temp=1;
for(int j=1;j<=4;j++){
//对每一个 i 进行八次乘方,四次循环,每次循环里面计算一次平方
temp =(temp*((i*i) %mod))%mod; //计算平方并取模,防止溢出 }
result=(result+temp)%mod;//把每一次 i 循环得到的八次方结果汇总到变量 result 中。
}
System.out.println(result);//打印输出 resualt
}
}