USACO:Your Ride is here
2013-08-06 16:17
363 查看
#include <stdio.h>
long Calculate(char name[]);
int main()
{
char CometName[10], GroupName[10];
freopen("ride.in", "r", stdin);
freopen("ride.out", "w", stdout);
scanf("%s", CometName);
scanf("%s", GroupName);
if((Calculate(CometName) % 47) == (Calculate(GroupName) %47))
printf("GO\n");
else printf("STAY\n");
fclose(stdin);
fclose(stdout);
return 0;
}
long Calculate(char name[])
{
int i;
long res=1;
for(i=0; name[i]!='\0'; ++i)
{
res*=(name[i]-'A'+1);
}
return res;
}
4. 模运算规则, 模运算与基本四则运算有些相似,但是除法例外。其规则如下
(a + b) % n = (a % n + b % n) % n (1)
(a - b) % n = (a % n - b % n) % n (2)
(a * b) % n = (a % n * b % n) % n (3)
ab % n = ((a % n)b) % n (4)
(1)式证明
∵ a = k1*n + r1
b = k2*n + r2
a % n = r1
b % n = r2
∴(a+b) % n = ((k1+k2)*n + (r1+r2)) % n = (r1+r2) % n = (a % n + b % n)% n
得证
(2)式证明同上
(3)式证明
a = k1*n + r1
b = k2*n + r2
(a*b) % n = (k1k2n2 + (k1r2+k2r1)n + r1r2) % n = r1r2 % n = (a %n * b %n ) % n
(4)式证明
设 a % n = r
ab %n= (a * a * a * a…*a) %n = (a %n * a %n * a %n * … * a %n) %n = rb % n = ((a % n) b) % n
模运算看起来不是很直观,但是可以用来推导出一些有用的东西。 例如(4)式可以用来降幂运算,例如计算6265 % 133,直接计算的话需要算出6265 利用(4)式可以进行降幂运算。
6265 % 133
= 62 * 6264 % 133
= 62 * (622)32 % 133
= 62 * 384432 % 133
= 62 * (3844 % 133)32 % 133
= 62 * 12032 % 133
= 62 * 3616 % 133
= 62 * 998 % 133
= 62 * 924 % 133
= 62 * 852 % 133
= 62 * 43 % 133
= 2666 % 133
= 6
----摘自http://www.cnblogs.com/jojoke/archive/2007/12/17/1003594.html
所以修改版本为
#include <stdio.h>
long Calculate(char name[]);
int main()
{
char CometName[10], GroupName[10];
freopen("ride.in", "r", stdin);
freopen("ride.out", "w", stdout);
scanf("%s", CometName);
scanf("%s", GroupName);
if(Calculate(CometName) == Calculate(GroupName))
printf("GO\n");
else printf("STAY\n");
fclose(stdin);
fclose(stdout);
return 0;
}
long Calculate(char name[])
{
int i;
long res=1;
for(i=0; name[i]!='\0'; ++i)
{
res*=((name[i]-'A'+1) % 47);
}
return res % 47;
}
long Calculate(char name[]);
int main()
{
char CometName[10], GroupName[10];
freopen("ride.in", "r", stdin);
freopen("ride.out", "w", stdout);
scanf("%s", CometName);
scanf("%s", GroupName);
if((Calculate(CometName) % 47) == (Calculate(GroupName) %47))
printf("GO\n");
else printf("STAY\n");
fclose(stdin);
fclose(stdout);
return 0;
}
long Calculate(char name[])
{
int i;
long res=1;
for(i=0; name[i]!='\0'; ++i)
{
res*=(name[i]-'A'+1);
}
return res;
}
4. 模运算规则, 模运算与基本四则运算有些相似,但是除法例外。其规则如下
(a + b) % n = (a % n + b % n) % n (1)
(a - b) % n = (a % n - b % n) % n (2)
(a * b) % n = (a % n * b % n) % n (3)
ab % n = ((a % n)b) % n (4)
(1)式证明
∵ a = k1*n + r1
b = k2*n + r2
a % n = r1
b % n = r2
∴(a+b) % n = ((k1+k2)*n + (r1+r2)) % n = (r1+r2) % n = (a % n + b % n)% n
得证
(2)式证明同上
(3)式证明
a = k1*n + r1
b = k2*n + r2
(a*b) % n = (k1k2n2 + (k1r2+k2r1)n + r1r2) % n = r1r2 % n = (a %n * b %n ) % n
(4)式证明
设 a % n = r
ab %n= (a * a * a * a…*a) %n = (a %n * a %n * a %n * … * a %n) %n = rb % n = ((a % n) b) % n
模运算看起来不是很直观,但是可以用来推导出一些有用的东西。 例如(4)式可以用来降幂运算,例如计算6265 % 133,直接计算的话需要算出6265 利用(4)式可以进行降幂运算。
6265 % 133
= 62 * 6264 % 133
= 62 * (622)32 % 133
= 62 * 384432 % 133
= 62 * (3844 % 133)32 % 133
= 62 * 12032 % 133
= 62 * 3616 % 133
= 62 * 998 % 133
= 62 * 924 % 133
= 62 * 852 % 133
= 62 * 43 % 133
= 2666 % 133
= 6
----摘自http://www.cnblogs.com/jojoke/archive/2007/12/17/1003594.html
所以修改版本为
#include <stdio.h>
long Calculate(char name[]);
int main()
{
char CometName[10], GroupName[10];
freopen("ride.in", "r", stdin);
freopen("ride.out", "w", stdout);
scanf("%s", CometName);
scanf("%s", GroupName);
if(Calculate(CometName) == Calculate(GroupName))
printf("GO\n");
else printf("STAY\n");
fclose(stdin);
fclose(stdout);
return 0;
}
long Calculate(char name[])
{
int i;
long res=1;
for(i=0; name[i]!='\0'; ++i)
{
res*=((name[i]-'A'+1) % 47);
}
return res % 47;
}
相关文章推荐
- USACO Your Ride Is Here
- USACO1.1--Your Ride Is Here +水题
- 【USACO】Your Ride Is Here
- [USACO] Section1.1 Your Ride Is Here[字符串处理]
- C++_USACO_从文件读出两个字符串_Your Ride Is Here
- [USACO 1.1.1] Your Ride Is Here
- USACO_1.1_Your_Ride_Is_Here_(字符串+水题)
- USACO 1.1.1 Your Ride Is Here
- USACO - Chapter1 Section 1.1 - Your Ride Is Here
- USACO Your Ride Is Here
- USACO:PROB Your Ride Is Here
- USACO-Your Ride Is Here(你的飞碟在这儿)-Section1.2<1>
- USACO-Section1.1 Your Ride Is Here
- USACO1.1.1 Your Ride Is Here
- usaco Your Ride Is Here 报告
- 【USACO】【section1.1】Your Ride Is Here
- your ride is here(USACO)
- USACO1.1.1 - PROB Your Ride Is Here
- USACO打怪升级 (三): Your Ride Is Here
- My USACO Analysis:Your Ride Is Here