当然我先把题目版切之后再好好写,先写个大纲,到时候就不会忘记整理了
入门:
http://acm.hdu.edu.cn/showproblem.php?pid=2035
#include<cstdio>
using namespace std;
const int MOD = 1000;
int QuickPow(int &a,int &b)
{
int res = 1;
while( b )
{
if( b&1 )
{
res = ( res * a)% MOD;
}
a = (a*a)%MOD;
b >>= 1;
}
return res;
}
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b)&&( a||b ))
{
printf("%d\n", QuickPow(a,b) );
}
return 0;
}
进阶:
http://acm.fafu.edu.cn/problem.php?id=1401
规律:
#include<cstdio>
using namespace std;
const int MAXN = 1024 + 5;
int n;
int res;
char ans[MAXN];
int w[3] = { 1, 2, 4 };
int main()
{
while (scanf("%d", &n) != EOF)
{
getchar();
gets(ans);
char ch;
res = 0;
for (int i = 0; i < n; ++i)
{
ch = getchar();
if (ch != ans[i])
res += w[(n - i - 1) % 3];
}
if (res == 0)
puts("right now!");
else if (res % 7 == 0)
puts("7");
else
printf("%d\n", res % 7);
}
return 0;
}
快速幂:
http://acm.fafu.edu.cn/problem.php?id=1189