本文共 776 字,大约阅读时间需要 2 分钟。
不会做这道题,连代码都看不懂。。。不愧是清华的题……
import java.io.*;public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String line; while((line=br.readLine())!=null){ String[] input=line.split(" "); System.out.println(root(Long.valueOf(input[0]), Long.valueOf(input[1]), Long.valueOf(input[2]))); } br.close(); } static long root(long x,long y,long k){ long ans=1; k-=1; while(y>0){ if((y&1)==1)//如果y是奇数那么y&1的值就是1,如果x是偶数那么y&1=0 ans=(ans*x)%k; x=(x*x)%k; y=y>>1; } return ans==0?k:ans; }}
这里用的应该是快速幂取模快速算法,看了几篇介绍这个算法的博客,但还是不懂……(脑子锈掉了,锈只有一点点去磨光)
先Mark
转载地址:http://icssi.baihongyu.com/