蓝桥杯八字求和(java)

文章介绍了如何在Java中不使用BigInteger类,通过快速幂算法解决求1^8+2^8+...+n^8对123456789取模的问题。关键在于每次计算过程中都对模数取余,防止数值溢出。代码中包含一个主函数和快速幂辅助函数,实现了对大整数的高效运算。
摘要由CSDN通过智能技术生成

蓝桥杯八字求和(java)

 【问题描述】
给定正整数 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。

该方法是采用快速幂的方法解决的,没有使用BigInteger。看到好多博客都是用BigInteger,所以不用BigInteger来试试。思路是1到n对123456789取模,可以先对每个数取模然后相加。然而这样做当n很大时依然会超出范围,所以在进行快速幂中让base对123456789取模,这样就不会超出范围了。

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int n=scan.nextInt();
		long x=123456789l;
		long sum=0l;
		for(long i=1l;i<=n;i++) {
			sum=sum+fn(i,8)%x;
			if(sum>x) {
				sum =sum%x;
			}
		}
		System.out.println(sum);
		
	}	
	
	//实现快速幂
	public static long fn(long base,long pow) {
		long ans=1;
		while(pow>0) {
			if((pow&1)==1) {
				ans*=base;
			}
			base=(base*base)%123456789;
			pow>>=1;      
		}
		return ans;
	}
	

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
八字占卜是一种古老的占卜方法,通过解读人出生时的年、月、日和时辰八个天干地支的组合,分析人的性格、运势、家庭、事业等方面。如果要将八字占卜与Java源码联系起来,可以考虑以下几个方面: 首先,可以根据用户输入的生辰信息,利用Java编写算法来计算出八字的天干地支组合。通过编写相关的逻辑和运算,可以准确地得出用户的八字信息。 其次,可以利用Java编写算法来解读八字的含义。根据传统的八字占卜理论和规则,编写相关的判断逻辑,将用户的八字信息与具体的性格特点、运势等进行匹配和解读。 另外,可以通过Java编写一套根据八字信息进行预测的系统。利用已有的八字占卜经验和规则,编写相关的算法和模型,可以根据用户的八字信息预测出未来的发展趋势,包括事业发展、婚姻状况、健康状况等方面。 最后,可以将八字占卜与其他功能相结合,打造一款功能强大的八字占卜应用。例如,可以结合用户的八字信息与其他星座占卜、塔罗占卜等功能,提供全面的占卜报告和建议。还可以编写用户交互的界面,让用户输入生辰信息,并且展示占卜结果和解读报告。 综上所述,通过Java编写八字占卜源码可以让用户方便地获取个人运势和未来发展的预测,帮助用户更好地了解自己的性格和把握机遇。但需要注意的是,八字占卜只是一种算命娱乐方式,不能完全依赖于它来决策人生。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值