POJ-1152 An Easy Problem! 解题报告(数论) 是不是N进制数
来源:互联网 发布:reflector mac 破解版 编辑:程序博客网 时间:2024/05/16 10:55
连接----An Easy Problem!
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 7802 Accepted: 1884
Description
Have you heard the fact "The base of every normal number system is 10" ? Of course, I am not talking about number systems like Stern Brockot Number System. This problem has nothing to do with this fact but may have some similarity.
You will be given an N based integer number R and you are given the guaranty that R is divisible by (N-1). You will have to print the smallest possible value for N. The range for N is 2 <= N <= 62 and the digit symbols for 62 based number is (0..9 and A..Z and a..z). Similarly, the digit symbols for 61 based number system is (0..9 and A..Z and a..y) and so on.
You will be given an N based integer number R and you are given the guaranty that R is divisible by (N-1). You will have to print the smallest possible value for N. The range for N is 2 <= N <= 62 and the digit symbols for 62 based number is (0..9 and A..Z and a..z). Similarly, the digit symbols for 61 based number system is (0..9 and A..Z and a..y) and so on.
Input
Each line in the input will contain an integer (as defined in mathematics) number of any integer base (2..62). You will have to determine what is the smallest possible base of that number for the given conditions. No invalid number will be given as input. The largest size of the input file will be 32KB.
Output
If number with such condition is not possible output the line "such number is impossible!" For each line of input there will be only a single line of output. The output will always be in decimal number system.
Sample Input
35A
Sample Output
4611
Source
uva 10093
题目大意:给定一个数,看能否用N(2<=N<=62)进制表示,输出能表示的最大进制。(32bit*1024约30000所以开大点的数组)
#include <iostream>#include<cstring>using namespace std;char s[50000];int data[200];int main(){int i;for(i='0';i<='9';i++)data[i]=i-'0';for(i='A';i<='Z';i++)data[i]=i-'A'+10;for(i='a';i<='z';i++)data[i]=i-'a'+36;//data[ASCII码]=1~62的数字,建立十进制库while(cin >> s)//这个用scanf还“output limit exceeded”了!{int len=strlen(s);int sum=0,max=0,result=0;for(int j=len-1;j>=0;j--){sum+=data[(int)s[j]];//s%(n-1)=(a *n^3 % (n-1) + b *n^2 % (n-1) + c *n % (n-1) + d % (n-1)) % (n-1)//再想想,n^k % (n-1)应该等于1,直接去掉,只剩 s %(n-1)= sum % (n-1);if(data[(int)s[j]]>max) max=data[(int)s[j]];}for(i=max+1;i<=62;i++)if(sum%(i-1)==0) {result=i;break;}if(result==0) printf("such number is impossible!\n");else printf("%d\n",result);}return 0;}
- POJ-1152 An Easy Problem! 解题报告(数论) 是不是N进制数
- I - An Easy Problem!解题报告(来自网络)
- I - An Easy Problem!解题报告(张宇)
- 解题报告 之 HDU5475 An easy problem
- POJ 2826 An Easy Problem!(简单数论)
- hdu2601 An easy problem(数论)
- HDU 2601 An easy problem (数论)
- POJ 1152 An Easy Problem
- poj-1152 An Easy Problem!
- Poj 1152 An Easy Problem!
- An Easy Task解题报告
- POJ 1152 An Easy Problem! (取模运算性质)
- POJ 1152 An Easy Problem!(进位制)
- POJ 1152 An Easy Problem! 笔记
- POJ 2826 An Easy Problem?!
- poj 2826 An Easy Problem?!
- poj 2453 An Easy Problem
- poj 2453 An Easy Problem
- ArrayList遍历的4种方法
- skyeye动态编译之translate details
- 第四章 (2)
- 转载:bash 语法
- C++的protected
- POJ-1152 An Easy Problem! 解题报告(数论) 是不是N进制数
- ASP.NET中IsPostBack的理解
- 【术语解析】H264和MPEG4的关系
- PV操作与信号灯及例子+三大操作系统共同点的线程通信
- hdu 3591 The trouble of Xiaoqian(多重背包+完全背包)
- POJ 1679 The Unique MST 次小生成树Prim
- Python+Pydev+Eclipse
- MyEclipse中web.xml和index.jsp文件字体设置
- 职业生涯规划(系统运维工程师)