解题思路:举例: 

(2+5+7+9)%3=2

转换》》 

2%3=2,   5%3=2,   7%3=1,  9%3=0

2+2+1+0=5%3=2  

都能得到2,但是,万一2+2+1+0加起来的数超过了long所能存储的范围了呢? 行不通,继续转换


转换》》

2%3=2,   5%3=2,   7%3=1,  9%3=0

(2+2)%3=1   (1+1)%3=2    (2+0)%3=2

行了!这不都保证小于3了嘛!


注意事项:double的范围大。强转有损失
参考代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {        
    	Scanner sc=new Scanner(System.in);
    	int n=sc.nextInt();
    	long sum=0L;
    	for(int i=1;i<=n;i++){
    		long s1=i*1L;
    		//long s2=s1;
    		for(int j=1;j<=3;j++){
    			s1=(s1*s1)%123456789L;  			
    			//s2=(long)Math.pow(s2,2)%123456789;
    		}
    		//sum+=(long)Math.pow((long)Math.pow((long)Math.pow(i,2)%123456789L,2)%123456789L,2)%123456789L;
    		sum+=s1;
    		sum%=123456789L;
    	}
    	System.out.print(sum);
    }
}


 

0.0分

2 人评分

  评论区

  • «
  • »