zoukankan      html  css  js  c++  java
  • p次方求和 http://acm.nyist.net/JudgeOnline/problem.php?pid=420

     

    p次方求和

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    一个很简单的问题,求1^p+2^p+3^p+……+n^p的和。
     
    输入
    第一行单独一个数字t表示测试数据组数。接下来会有t行数字,每行包括两个数字n,p, 输入保证0<n<=1000,0<=p<=1000。
    输出
    输出1^p+2^p+3^p+……+n^p对10003取余的结果,每个结果单独占一行。
    样例输入
    2
    10 1
    10 2
    
    样例输出
    55
    385
    来源
    原创
    #include<stdio.h>
    
    int chifang(int m,int q)
    {
    	int j1=1,j2=m;
    	while(q)
    	{
    		if(q&1)
    			j1=j1*j2%10003;
    		j2=(j2*j2)%10003;
    		q>>=1;
    	}
    	return j1;
    }
    
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		int i,p,n,sum=0;
    		scanf("%d %d",&n,&p);
    
    		for(i=1;i<=n;i++)
    		{
    			sum=(sum+chifang(i,p))%10003;
    		}
    		printf("%d
    ",sum);
    	}
    	return 0;
    }
    

    这题一方面用了求N的P次幂节省乘法次数的方法,另一方面又用了模运算定理。关于减少乘法次数的那个算法,我也不太懂,感觉就好像1和2是个好特殊的数,它们能把所有可计算的数都巧妙的表示出来,记住就好了,以后有关幂运算的就可以用它了。

  • 相关阅读:
    用工具爬虎牙星秀VS用代码
    mysql简单的操作
    MySQL5.1的安装过程
    MySQL的安装
    SQL server 2008 的安装
    数据库基础知识
    HTTP协议
    TCP协议
    web系统基础
    软件测试缺陷的定义、产生原因、缺陷报告格式、缺陷报告
  • 原文地址:https://www.cnblogs.com/wangyouxuan/p/3288323.html
Copyright © 2011-2022 走看看