zoukankan      html  css  js  c++  java
  • poj 1152

    数据量不大,可以直接枚举。首先确定所需要的最小进制,然后从此处向62进行枚举。然后就是关于求摸的问题。不可能把整个数先求出来。因为数很大,根本存不下。根据求摸公式可得结果a1a2a3a4...a(s)%(n-1)=(a1+a2+...a(s)))%(n-1)

    #include <iostream>
    #include <cstring>
    using namespace std;
    char s[40000];
    int get(char a)
    {
    	if(a>='0'&&a<='9') return a-'0';
    	else if(a>='A'&&a<='Z') return a-'A'+10;
    	else return a-'a'+36;
    }
    int main()
    {
    	while(cin>>s)
    	{
    		int i;
    		int max=0,t;
    		int len=strlen(s);
    		for(i=0;i<len;i++)
    		{
    			t=get(s[i])+1;
    			if(max<t) max=t;
    		}
    
    		int sum=0,j;
    		for(j=0;j<len;j++)
    				sum+=get(s[j]);
    		for(i=max;i<=62;i++)
    		{
    			if(sum%(i-1)==0)
    			{
    				cout<<i<<endl;
    				break;
    			}
    		}
    		if(i>62) cout<<"such number is impossible!"<<endl;
    	}
    	return 0;
    }
    


  • 相关阅读:
    语文成语的积累
    关于翻译
    关于文常
    语文小说
    语文 散文阅读
    矩佬的博客
    字词
    语文病句
    地理
    寒假某cg的数学卷子....
  • 原文地址:https://www.cnblogs.com/lj030/p/3002228.html
Copyright © 2011-2022 走看看