ACM: 简单题 poj 1152 (简单题也wr…
来源:互联网 发布:厦门淘宝代运营 编辑:程序博客网 时间:2024/05/21 19:26
An Easy Problem!
DescriptionHave you heard the fact "Thebase of every normal number system is 10" ? Of course, I am nottalking about number systems like Stern Brockot Number System. Thisproblem has nothing to do with this fact but may have somesimilarity.
You will be given an N based integer number R and you are given theguaranty that R is divisible by (N-1). You will have to print thesmallest possible value for N. The range for N is 2<= N <= 62 and the digit symbols for62 based number is (0..9 and A..Z and a..z). Similarly, the digitsymbols for 61 based number system is (0..9 and A..Z and a..y) andso on.
You will be given an N based integer number R and you are given theguaranty that R is divisible by (N-1). You will have to print thesmallest possible value for N. The range for N is 2<= N <= 62 and the digit symbols for62 based number is (0..9 and A..Z and a..z). Similarly, the digitsymbols for 61 based number system is (0..9 and A..Z and a..y) andso on.
Input
Each line in the input willcontain an integer (as defined in mathematics) number of anyinteger base (2..62). You will have to determine what is thesmallest possible base of that number for the given conditions. Noinvalid number will be given as input. The largest size of theinput file will be 32KB.
Output
If number with such condition isnot possible output the line "such number is impossible!" For eachline of input there will be only a single line of output. Theoutput will always be in decimal number system.
Sample Input
3
5
A
Sample Output
4
6
11
题意:N进制的数R, 找出最小的N使得R%(N-1) == 0;
解题思路:
1. 我们知道R%(N-1) == 0可以推出R的每一位数的和sum%(N-1) == 0.
2. 注意的是 2 <= N <= 62
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
#define MAX 32769
char str[MAX];
inline int max(int a,int b)
{
return a > b ? a : b;
}
inline int value(char ch)
{
if(ch >= '0' && ch <= '9')
return ch - '0';
else if(ch >= 'A' && ch <= 'Z')
return ch - 'A' + 10;
else
return ch - 'a' + 36;
}
int main()
{
//freopen("input.txt","r",stdin);
while( scanf("%s",str) != EOF )
{
int len = strlen(str);
int sum = 0;
int base = 0;
for(int i = 0; i < len; ++i)
{
int temp = value(str[i]);
base = max(base,temp);
sum += temp;
}
if(base == 0)
{
printf("2\n");
continue;
}
int i;
for(i = base; i < 62; ++i)
{
if(sum % i == 0)
break;
}
if(i == 62)
printf("such number is impossible!\n");
else
printf("%d\n",i+1);
}
return 0;
}
0 0
- ACM: 简单题 poj 1152 (简单题也wr…
- ACM: 简单动态规划题 poj 2955
- ACM: 简单排序题 poj 2231 动动脑…
- ACM: 简单 动态规划题 toj 1509 (…
- ACM: 简单数塔题 dp题 poj 3176
- ACM: 简单 动态规划题 poj 3036
- ACM: 回文串 dp题 poj 1159 (滚动…
- ACM: 简单题 uva 10881
- ACM: 搜索题 poj 1…
- ACM: 极其简单题 uva&nb…
- ACM: dp题 poj 1276 go on 动态规…
- ACM: 简单最小生成树 图论题 poj 1…
- ACM: 一题STL map题 poj 1002 (bt…
- ACM: poj 第50题 一题递推数论题 …
- ACM: 又是一题二分法题 poj 3122…
- ACM: dp动态规划题(难) poj 3267 …
- ACM: dp题(动态规划) poj 2151 (d…
- ACM: 树状DP 动态规划题 poj 1463 …
- ACM: 直接敲出LCA算法 图论题 poj …
- 柴俊理金:5、19午夜黄金,宁贵沥青操作策略
- ACM: 树的直径(两点最长距离) 图论…
- 数论: 一次同余式 (中国剩余定律)
- ACM: 二进制问题 数论题 poj 1023
- ACM: 简单题 poj 1152 (简单题也wr…
- 数论:复合数模的任意次同余式
- ACM: 几何题+hash题 poj 2002
- ACM: 简单排序题 poj 2231 动动脑…
- 动态规划: 装配线调度问题 (算法导…
- ACM: 矩阵链乘 动态规划题 poj 165…
- 深度优先搜索(deep first search)
- ACM: 矩阵快速幂运算 数论题 poj 3…
- leetcode 168. Excel Sheet Column Title-表格栏目|进制转换