Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 6648 | Accepted: 3958 |
Description
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 AiBifrom 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
Output
(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
有的人愛看片兒、有的人愛在地窖裏造原子彈、有的人愛用Windows,我愛計算(A1B1+A2B2+ … +AHBH)mod M,真的不是很懂你們出題人。純快速冪。爲什麼32位機用long long老是各種毛病?__int64就沒事,但是某個OJ不能用__int64,搞得我現在只敢用long long了,這次乾脆不輸出了,找了半天沒有bug,改成__int64一切正常。然後交了。直接AC。百思不得其姐姐。
#include<stdio.h>
long long fff(long long x,long long y,long long z)
{
long long ans=1;
x=x%z;
while(y)
{
if(y%2==1)
ans=(ans*x)%z;
x=(x*x)%z;
y=y/2;
}
return ans;
}
int main()
{
int t;
scanf("%d",&t);
long long i,m,n,a,b,ans;
while(t--)
{
ans=0;
scanf("%lld%lld",&m,&n);
for(i=0;i<n;i++)
{
scanf("%lld%lld",&a,&b);
ans=(ans+fff(a,b,m))%m;
}
printf("%lld\n",ans);
}
return 0;
}