I - An Easy Problem!문제 해결 보고서 (네트워크에서)
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u
Submit
Status
Practice
POJ 1152
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.
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
3
5
A
Sample Output
4
6
11
제목: 이 수가 2-64진수 중 어느 진수에서 가장 큰지 숫자를 입력하십시오.
알고리즘 사고방식: (출처discuss 토론 구역)
입력한 것은 abcd이고, 그 해가 n진수라고 가정하면
(a*n*n*n + b*n*n + c*n + d)%(n-1)=0
(a*n*n*n)%(n-1)+(b*n*n)%(n-1)+(c*n)%(n-1)+d)%(n-1)=0
(a*(n% (n-1))*(n% (n-1))*(n% (n-1)))+(b* (n% (n-1))*(n% (n-1))))+(c* (n% (n-1)+d)% (n-1)=0
(a*1*1*1+b*1*1+c*1+d)%(n-1)=0
있음: (a+b+c+d)% (n-1) = 0
참고:
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.(결과가 없을 수도 있음)
코드:
#include <stdio.h>
#include <string.h>
char a[30005];
int main()
{
int i,len,f,flag;
__int64 sum;
while( scanf("%s",a)!=EOF )
{
len=strlen(a);
sum=0;
f=1;// , :15 4, 。
for(i=0;i<len;i++)
{
if( a[i]>='0' && a[i]<='9' )
{
sum=sum+(a[i]-'0');
if( a[i]-'0'>f )
f=a[i]-'0';
}
else if( a[i]>='A' && a[i]<='Z' )
{
sum=sum+(a[i]-55);
if( a[i]-55>f )
f=a[i]-55;
}
else
{
sum=sum+(a[i]-61);
if( a[i]-61>f )
f=a[i]-61;
}
}
flag=1;
for(i=2;i<=62;i++)
{
if( sum%(i-1)==0 && i>f )
{
flag=0;
printf("%d/n",i);
break;
}
}
if( flag )
printf("such number is impossible!/n");
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
"5G"의 비즈니스 모델ICT 비즈니스는 "지금, 미국에서 일어나고 있는 일이 3~5년 후에 일본에서 일어난다""지금 중국이 가장 진행되고 있어 그것을 쫓는 일본"이라고 생각되기 쉽지만, 5G의 비즈니스는 그렇다고는 말할 수없는 상황에 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.