快速幂——poj1995
2016-04-12 16:01
211 查看
Raising Modulo Numbers
Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d
& %I64u
SubmitStatusPracticePOJ
1995
Description
People are different. Some secretly read magazines full of interesting girls' pictures, others create an A-bomb in their cellar, others like using Windows, and some like difficult mathematical games. Latest marketing research shows,
that this market segment was so far underestimated and that there is lack of such games. This kind of game was thus included into the KOKODáKH. The rules follow:
Each player chooses two numbers Ai and Bi and writes them on a slip of paper. Others cannot see the numbers. In a given moment all players show their numbers to the others. The goal is to determine the sum of all expressions Ai
Bi from all players including oneself and determine the remainder after division by a given number M. The winner is the one who first determines the correct result. According to the players' experience it is possible to increase the difficulty by
choosing higher numbers.
You should write a program that calculates the result and is able to find out who won the game.
Input
The input consists of Z assignments. The number of them is given by the single positive integer Z appearing on the first line of input. Then the assignements follow. Each assignement begins with line containing an integer M (1
<= M <= 45000). The sum will be divided by this number. Next line contains number of players H (1 <= H <= 45000). Next exactly H lines follow. On each line, there are exactly two numbers Ai and Bi separated by space. Both numbers cannot be equal zero at the
same time.
Output
For each assingnement there is the only one line of output. On this line, there is a number, the result of expression
(A1B1+A2B2+ ... +AHBH)mod M.
Sample Input
Sample Output
Time Limit:1000MS Memory Limit:30000KB 64bit IO Format:%I64d
& %I64u
SubmitStatusPracticePOJ
1995
Description
People are different. Some secretly read magazines full of interesting girls' pictures, others create an A-bomb in their cellar, others like using Windows, and some like difficult mathematical games. Latest marketing research shows,
that this market segment was so far underestimated and that there is lack of such games. This kind of game was thus included into the KOKODáKH. The rules follow:
Each player chooses two numbers Ai and Bi and writes them on a slip of paper. Others cannot see the numbers. In a given moment all players show their numbers to the others. The goal is to determine the sum of all expressions Ai
Bi from all players including oneself and determine the remainder after division by a given number M. The winner is the one who first determines the correct result. According to the players' experience it is possible to increase the difficulty by
choosing higher numbers.
You should write a program that calculates the result and is able to find out who won the game.
Input
The input consists of Z assignments. The number of them is given by the single positive integer Z appearing on the first line of input. Then the assignements follow. Each assignement begins with line containing an integer M (1
<= M <= 45000). The sum will be divided by this number. Next line contains number of players H (1 <= H <= 45000). Next exactly H lines follow. On each line, there are exactly two numbers Ai and Bi separated by space. Both numbers cannot be equal zero at the
same time.
Output
For each assingnement there is the only one line of output. On this line, there is a number, the result of expression
(A1B1+A2B2+ ... +AHBH)mod M.
Sample Input
3 16 4 2 3 3 4 4 5 5 6 36123 1 2374859 3029382 17 1 3 18132
Sample Output
2 13195 13
因为如果先把全部加起来再取余的话会爆,long long也爆,所以在快速幂里每一步都求一下余
#include <iostream> #include <cstring> #include <algorithm> #define LL long long using namespace std; LL m; LL pow_Fast(LL x,LL y) { return y?(y&1?x*pow_Fast(x,y-1)%m:pow_Fast(x*x%m,y>>1)):1; } int main() { int t,h; cin>>t; while(t--) { cin>>m; cin>>h; LL a,b; LL ans=0; while(h--) { cin>>a>>b; ans=(ans+pow_Fast(a,b)); ans%=m; } cout<<ans<<endl; } return 0; }
相关文章推荐
- SayHello界面的编辑
- IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
- MFC对话框显示图片(使用Picture控件)
- javaweb 常用内置对象
- Java类加载顺序
- C#实现Excel动态生成PivotTable
- linux 发布脚本
- git常用命令汇总
- Android_ScrollView中嵌套ListView显示不全的解决方法
- Jenkins环境搭建(3)
- 【e2label】查看或定义卷标
- @Transactional spring 配置事务 注意事项
- microsoft windows network 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接
- iOS学习笔记20-地图(二)MapKit框架
- 统计n!尾部零
- js字符串常用方法
- wing 3.x 插件开发案例
- 树状数组&二维树状数组模板
- iOS URLEcode,URLDecode
- Tyvj_P1002