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是个好特殊的数,它们能把所有可计算的数都巧妙的表示出来,记住就好了,以后有关幂运算的就可以用它了。

  • 相关阅读:
    win7如何配置access数据源
    pcA降维算法
    今天的分类
    实现MFC菜单画笔画圆,并且打钩
    多个字符串输出,竖直输出
    端口重用
    安卓快速关机APP
    端口转发
    学习OpenCV
    求解数独
  • 原文地址:https://www.cnblogs.com/wangyouxuan/p/3288323.html
Copyright © 2011-2022 走看看