1、http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1576&cid=1199
2、注意n>m时取小值即可,大于m的n的阶乘再模余m等于0,注意a>b,ab取负数
3、题目:
魔幻数字47
Time Limit: 1000MS Memory limit: 32768K
题目描述
数字47一向被数学界的人认为是很魔幻的一个数字,和47有关的任务被认为是魔幻任务。现在有一个简单的魔幻任务,给定a和b,打印所有在 以a,b为端点的闭区间 中最后两位为47的整数,你能一次AC吗??
输入
第一行为一个整数n,表示有多少组测试数据。(n <= 100)
第2-n+1行,每行两个整数,分别代表a,b。(a,b <= 10000)
输出
对于每组输入,输出在以a,b为端点的闭区间内且最后两位为47的整数,如果有多个,则从小到大排序输出;若一个都没有,则输出NONE。
示例输入
2 1 147 1 2
示例输出
47 147 NONE
4/AC代码
#include<stdio.h>
int main()
{
int t,a,b,i;
int aa[105];
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
if(a>b)
{
int d=a;
a=b;
b=d;
}
if(a>-47 && b<47)
printf("NONE\n");
else if(a<0)
{
i=0;
int tmp=-47;
aa[0]=-47;
while(tmp>=a)
{
//printf("$$%d %d\n",tmp,a);
if(tmp<=b)
aa[++i]=tmp-100;
tmp-=100;
}
if(aa[i]<a)
i=i-1;
for(int j=i;j>=0;j--)
printf("%d\n",aa[j]);
int c=47;
while(c<=b)
{
if(c>=a)
printf("%d\n",c);
c+=100;
}
}
else
{
int c=47;
while(c<=b)
{
if(c>=a)
printf("%d\n",c);
c+=100;
}
}
}
return 0;
}
/*
9
47 144
0 3
47 47
-200 47
-300 -47
43 400
200 -200
*/