湘潭oj1203/邀请赛A题 数论+java大数
来源:互联网 发布:win7怎么优化开机速度 编辑:程序博客网 时间:2024/05/18 01:08
求 n%1+n%2+n%3+n%4+.........n%n=,n<=10^12次。
开始时盲目地找规律,结果一无所获。后来经学长点拨,天资愚钝,搞了半天才明白。
先上图:
对于该题,在求区间(根号n,n),由于n%i=n-i*x(这里x是从1枚举到根号n,每个k 对应n/(x+1)~n/x区间内,由于是等差数列(还是递减),直接用公式求和)。
哎(根号n,n)区间是被分割来求得,分成根号n次。
import java.io.*;import java.util.Scanner;import java.math.BigInteger;public class Main{public static void main(String[] args) {int T; Scanner in=new Scanner(System.in); T=in.nextInt(); for(int ii=1;ii<=T;ii++) { long n; BigInteger sum=new BigInteger("0"); n=in.nextLong(); long lasta=2*n; for(long i=1;i*i<n;i++) { sum=sum.add(BigInteger.valueOf(n%i)); if((i+1)>=lasta){break;} //边界判断 long b=n/i; long a=n/(i+1)+1; BigInteger temp1=BigInteger.valueOf(n); //将一个 long型数据转为biginteger temp1=temp1.multiply(BigInteger.valueOf((b-a+1))); BigInteger temp2=BigInteger.valueOf(b+a); temp2=temp2.multiply(BigInteger.valueOf(i)); //* temp2=temp2.multiply(BigInteger.valueOf(b-a+1)); temp2=temp2.divide(BigInteger.valueOf(2)); //除以 temp1=temp1.subtract(temp2); // - sum=sum.add(temp1); //+ lasta=a; } System.out.println("Case "+ii+": "+sum); //Java的println自动带换行。注意! }}}
0 0
- 湘潭oj1203/邀请赛A题 数论+java大数
- [2016湘潭邀请赛 A. 2016] 大数取模+循环节
- 15年湘潭邀请赛 A题 Coins
- 湘潭邀请赛 A题 矩阵快速幂
- 湘潭邀请赛A
- 2015湘潭邀请赛 A.Coins
- XTU 1203 A simple problem (2014 湖南湘潭邀请赛 A题)(数学)
- 15年湘潭邀请赛 D题 Fraction
- 2016 湘潭邀请赛 c 题 Hamiltonian Path
- 2017 湘潭大学邀请赛H题--Highway
- 湘潭CCPC A题
- ACM_ICPC 湘潭邀请赛
- 湘潭邀请赛总结
- 2015湘潭邀请赛小记
- 2015 湘潭邀请赛 Fraction
- 2015 湘潭邀请赛 Tuples
- 2015湘潭邀请赛 CQRXLB
- 湘潭大学中南邀请赛
- book.douban.com/doulist/4306319/
- book.douban.com/doulist/4306818/
- CFtpConnection::GetFile和使用实例
- threadid=1: thread exiting with uncaught exception (group=0x40e40438)
- 【转载】设计模式之美_只有链接
- 湘潭oj1203/邀请赛A题 数论+java大数
- 黑马程序员 关于枚举类型总结
- Linux date命令
- J2EE之Servlet初见
- 互联网大佬的枕边美女
- Qt学习(七) QMessageBox弹出的对话框关闭后,整个程序退出的解决方法
- 【转载】基于android的远程视频监控系统(已开放源码)_只有链接
- C#程序打包(包括数据库安装)
- JDK Class 版本识别表