1. 程式人生 > >2017-5-16-Train:喵哈哈村的魔法考試 Round #19 (Div.2)

2017-5-16-Train:喵哈哈村的魔法考試 Round #19 (Div.2)

amp include event 技術 分享 typedef can 數據 add

A.喵哈哈村的魔力源泉(水題)

描述

喵哈哈村有一個魔法源泉,裏面有無窮無盡的力量。

但是前提是你能答出這樣一個問題:

給你a,b,p,讓你輸出a*b%p的值。

輸入

本題包含若幹組測試數據。第一行三個整數a,b,p。滿足:0<=a,b,p<=1e9

輸出

輸出答案

樣例輸入1

1 2 5
2 3 5

樣例輸出1

2
1

Solve:

水題

Code:

技術分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     long long
a , b , c; 6 while(~scanf("%lld%lld%lld" , &a , &b , &c)) 7 { 8 printf("%lld\n" , a * b % c); 9 } 10 }
View Code

B.喵哈哈村的魔法源泉(快速加)

描述

喵哈哈村有一個魔法源泉,裏面有無窮無盡的力量。

但是前提是你能答出這樣一個問題:

給你a,b,p,讓你輸出a*b%p的值。

輸入

本題包含若幹組測試數據。第一行三個整數a,b,p。滿足:0<=a,b,p<=1e18

輸出

輸出答案

樣例輸入1

10 1 7

樣例輸出1

3

Solve:

廣義快速冪的快速加

Code:

技術分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 LL QuickAdd(LL a , LL b , LL mod)
 5 {
 6     LL yaoyuan = 0;
 7     while(b)
 8     {
 9         if(b & 1)
10             yaoyuan = (yaoyuan + a) % mod;
11 a = (a + a) % mod; 12 b >>= 1; 13 } 14 return yaoyuan; 15 } 16 int main() 17 { 18 LL a , b , p; 19 while(~scanf("%lld%lld%lld" , &a , &b , &p)) 20 { 21 printf("%lld\n" , QuickAdd(a , b , p)); 22 } 23 24 }
View Code

2017-5-16-Train:喵哈哈村的魔法考試 Round #19 (Div.2)