zoukankan      html  css  js  c++  java
  • POJ 1152 An Easy Problem! (取模运算性质)

    题目链接:POJ 1152 An Easy Problem!

    题意:求一个N进制的数R。保证R能被(N-1)整除时最小的N。

    第一反应是暴力。N的大小0到62。发现当中将N进制话成10进制时,数据会溢出。

    这里有个整除,即(N-1)取模为0。

    样例:a1a2a3表示一个N进制的数R。化成10进制:

    (a1*N*N+a2*N+a3)%(N-1)==((a1*N*N)%(N-1)+(a2*N)%(N-1)+(a3)%(N-1))%(N-1)==(a1+a2+a3)%(N-1)。

    这样防止了数据的溢出。



    AC代码:


    #include<stdio.h>
    #include<string.h>
    #define ll __int64
    #include<map>
    using namespace std;
    map<char,ll> mm;
    
    int main()
    {
    	ll max,ans;
    	ll n,i,len;
    	char s[100]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    	char ss[50000+10];
    	mm.clear();
    	for(i=0;i<strlen(s);i++)
    	{
    		mm[s[i]]=i;
    		//printf("(%c %d)
    ",s[i],mm[s[i]]);
    	}
    	while(scanf("%s",ss)!=EOF)
    	{
    		len=strlen(ss);
    		ans=0;
    		max=2;
    		for(i=0;i<len;i++)
    		{
    			if(max<mm[ss[i]])
    				max=mm[ss[i]];
    			ans+=mm[ss[i]];
    		}
    		for(i=max+1;i<63;i++)
    		{
    			if(ans%(i-1)==0)
    				break;
    		}
    		if(i>=63)
    			printf("such number is impossible!
    ");
    		else
    			printf("%d
    ",i);
    	}
    	return 0;
    }


  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7161499.html
Copyright © 2011-2022 走看看