zoj 3622 Magic Number (找规律+打表)
2012-07-29 21:34
399 查看
题目分析:X为任意正数,正数Y,满足(X*10^y+Y)%Y=0,数Y被称为magic number。找出M~N之间的所有magic number。1~10^4之间的magic number的数字有:1, 2, 5,10, 20, 25, 50,100, 125, 200, 250, 500, 1000, 1250, 2000, 2500, 5000
规律就出来了,,,其他的都是125,200,250,500乘以10^i.........
代码:
规律就出来了,,,其他的都是125,200,250,500乘以10^i.........
代码:
#include<iostream> #include<cstdio> #include<cmath> using namespace std; long long arr[10000]; const int MAX=1<<31-1;//2<<31-1...脑残了 int main() { int m,n; while(scanf("%d %d",&m,&n)!=EOF) { int a1=100,a2=125,a3=200,a4=250,a5=500,num=7; arr[0]=1,arr[1]=2,arr[2]=5; arr[3]=10,arr[4]=20,arr[5]=25,arr[6]=50; //printf("MAX=%d\n\n",MAX); long long temp; for(int i=0;i<=7;i++) { temp=(long long)pow(10.0,i*1.0); arr[num++]=a1*temp; arr[num++]=a2*temp; arr[num++]=a3*temp; arr[num++]=a4*temp; arr[num++]=a5*temp; if(arr[num-1]>MAX) break; } /*for(int i=0;i<num;i++) printf("%d ",arr[i]);*/ int start=-10,end=-10,ans=0; for(int i=0;i<num;i++) { if(start==-10) { if(arr[i]==m) { start=i-1; //printf("start=%d\n\n",start); } else if(arr[i]>m) start=i-1; } if(end==-10) { if(arr[i]==n) { end=i+1; // printf("end=%d\n\n",end); } else if(arr[i]>n) end=i; } } ans=end-start-1; printf("%d\n",ans); } //system("pause"); return 0; }
相关文章推荐
- ZOJ 3622 Magic Number 打表找规律
- 【数学规律】-ZOJ-3622-Magic Number
- zoj 3622 Magic Number 【规律】
- zoj 3622 Magic Number(找规律)
- ZOJ 3622 Magic Number(打表)
- ZOJ-#3622 Magic Number(找规律)
- ZOJ 3622 Magic Number(数)
- zoj 3622 Magic Number
- ZOJ 3622 Magic Number
- ZOJ 3939 The Lucky Week (打表预处理/找规律)
- ZOJ——3622 Magic Number
- ZOJ 3785-What day is that day?-数论(费马小定理) / 打表找规律
- zoj 3622 Magic Number
- zoj 3785 打表找规律
- ZOJ 3876 May Day Holiday(找规律||打表-基姆拉尔森计算公式(求某年某月某日星期几))
- ZOJ-3768:Continuous Login(打表找规律+暴力)
- ZOJ 3939 The Lucky Week 找规律打表
- ZOJ 3622 —— Magic Number(水题)
- zoj 3622 Magic Number (构造?)
- 【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律