蓝桥杯2020年真题:八次求和

题目

时间限制: 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

答案

package competition4;

import java.util.Scanner;

public class SumEight
{
	public static void main(String[] args)
	{
		/*
		 * 为什么将所有的数据类型都改成long类型呢?
		 * 因为评测用例规模与约定中对于所有评测用例,1≤n≤1000000。
		 * 如果是int类型的话,n*n在n=1000000的时候会溢出
		 */
		Scanner in = new Scanner(System.in);
		long n=in.nextLong();
		in.close();
		int mod=123456789;
		long result=0;
		long temp=1;
		
		//for循环遍历1到n的每一个数的八次方
		for(long x=1;x<=n;x++)
		{
			//下面一个for循环就是得到x的八次方的值,每一次都初始化temp的值
			temp=1;
			for(int y=1;y<=4;y++)
			{
				//进行四次循环,每一次都是x的平方,而且每一次平方后都取模
				//这样保证它不会溢出
				temp =(temp*((x*x) %mod))%mod; 
			}
			//将x的八次方加起来,进入下一个x的八次方
			result =(result+temp)%mod;
		}
		System.out.println(result);
	}
}
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReflectMirroring

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值