/*
51Nod 1116
题意大体是
一个数在k进制下是(k-1)的倍数问k是几
进制转换
十进制转换成k进制的核心是
a5a4a3a2a1=a5*k^4+a4*k^3+a3*k^2+a2*k^1+a1*k^0
先把每一位转换成十进制下的数
如:7->7 A->10一样
然后从个位开始乘以进制数加上下一位数
相当于把原来的数的进行如下操作:
for(int j=0; j<i-1; j++)
{
if(ch[j]>='A'&&ch[j]<='Z')
sum=sum*k+(ch[j]-'A'+10);
else
sum=sum*k+(ch[j]-'0');
}
十进制下字母对应的数值
A B C D E F G H I J K L M
10 11 12 13 14 15 16 17 18 19 20 21 22
N O P Q R S T U V W X Y Z
23 24 25 26 27 28 29 30 31 32 33 34 35
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define MAX 1000005
using namespace std;
int main()
{
char ch[100005];
memset(ch,'\0',sizeof(ch));
char maxn=0;
int i;
for(i=0; ch[i-1]!='\n'; i++)
{
scanf("%c",&ch[i]);
if(ch[i]!='\n'&&ch[i]>maxn)
maxn=ch[i];
}
int max;
if(maxn>='0'&&maxn<='9')
max=maxn-'0';
else
max=maxn-'A'+10;
int flag=0;
for(int k=max+1; k<=36; k++)
{
int sum = 0;
for(int j=0; j<i-1; j++)
{
if(ch[j]>='A'&&ch[j]<='Z')
{
sum=sum*k+(ch[j]-'A'+10);
sum=sum%(k-1);
}
else
{
sum=sum*k+(ch[j]-'0');
sum=sum%(k-1);
}
}
if(sum == 0)
{
cout<<k<<endl;
flag=1;
break;
}
}
if(!flag)
cout<<"No Solution"<<endl;
return 0;
}
51Nod 1116
题意大体是
一个数在k进制下是(k-1)的倍数问k是几
进制转换
十进制转换成k进制的核心是
a5a4a3a2a1=a5*k^4+a4*k^3+a3*k^2+a2*k^1+a1*k^0
先把每一位转换成十进制下的数
如:7->7 A->10一样
然后从个位开始乘以进制数加上下一位数
相当于把原来的数的进行如下操作:
for(int j=0; j<i-1; j++)
{
if(ch[j]>='A'&&ch[j]<='Z')
sum=sum*k+(ch[j]-'A'+10);
else
sum=sum*k+(ch[j]-'0');
}
十进制下字母对应的数值
A B C D E F G H I J K L M
10 11 12 13 14 15 16 17 18 19 20 21 22
N O P Q R S T U V W X Y Z
23 24 25 26 27 28 29 30 31 32 33 34 35
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define MAX 1000005
using namespace std;
int main()
{
char ch[100005];
memset(ch,'\0',sizeof(ch));
char maxn=0;
int i;
for(i=0; ch[i-1]!='\n'; i++)
{
scanf("%c",&ch[i]);
if(ch[i]!='\n'&&ch[i]>maxn)
maxn=ch[i];
}
int max;
if(maxn>='0'&&maxn<='9')
max=maxn-'0';
else
max=maxn-'A'+10;
int flag=0;
for(int k=max+1; k<=36; k++)
{
int sum = 0;
for(int j=0; j<i-1; j++)
{
if(ch[j]>='A'&&ch[j]<='Z')
{
sum=sum*k+(ch[j]-'A'+10);
sum=sum%(k-1);
}
else
{
sum=sum*k+(ch[j]-'0');
sum=sum%(k-1);
}
}
if(sum == 0)
{
cout<<k<<endl;
flag=1;
break;
}
}
if(!flag)
cout<<"No Solution"<<endl;
return 0;
}