zoukankan      html  css  js  c++  java
  • 【进制】【CF】B. Martian Clock

    image

    题目意思:

    火星上使用了一套表示时间的系统,这套系统和地球上时间表示系统是相似的。

    给定一个火星时间,猜测判断其进制类型(通过将火星时间转换成地球时间,该地球时间是否存在不合理的地方,如果没有,则说明在该进制下,火星时间是可行的)

    若不存在任何进制,则输出0;

    若任何进制都可以采取,则输出-1;

    • 极端情况下,只需要判断一下60进制可不可以,一旦60进制可以,则说明小时和分钟部分都只存在个数(个数都是乘上进制的0次方,所以采取任何进制对结果没有任何影响)。

    • 同时,在一个进制下,数字上的每一位上的数字是不能超过进制规定的最大数字的。
      二分答案的不可行性:答案区域并不是从区间中的某一个点覆盖到一端。

    #include <bits/stdc++.h>
    #define ull unsigned long long
    #define rep(i,x,n) for(int i=x;i<n;i++)
    #define repd(i,x,n) for(int i=x;i<=n;i++)
    using namespace std;
    string s,h,m;
    bool check(int k)
    {
        int jud1 = 0,jud2 = 0;
        rep(i,0,h.length())
        {
    	int add=0;
    	if(h[i]>='A'&&h[i]<='Z')
    	   add=h[i]-'A'+10;
    	else add=h[i]-'0';
    	if(add>=k)return false;
    	jud1=jud1*k+add;	
        }
        rep(i,0,m.length())
        {
    	 nt add=0;
    	 if(m[i]>='A'&&m[i]<='Z')
    	    add=m[i]-'A'+10;
    	 else add=m[i]-'0';
    	 if(add>=k)return false;
    	 jud2=jud2*k+add;	
    	} 
    	if( (jud1>=0 && jud1<24) && (jud2>=0 && jud2<60) )
    	   return true;
    	return false;
    }
    int main()
    {
    	cin>>s;
    	h = s.substr(0,s.find(':'));
    	m = s.substr(s.find(':')+1);
        if(check(60)) cout<<-1;
        else
        {
        	bool flag=0;
        	repd(i,1,60)
        	    if(check(i))
        	       flag=1,cout<<i<<" ";
            if(!flag) cout<<0;
        }
        return 0;
    }
    
    
  • 相关阅读:
    python 3 dict函数 神奇的参数规则
    python 3 黑色魔法元类初探
    私有变量为何传给了子类?
    [转]django-registration quickstart
    DoesNotExist at /account/
    DoesNotExist at /admin/
    setting.py
    Python excel 奇怪的通信规则
    Python 一个奇特的引用设定
    Chrome 内存和CPU消耗量双料冠军
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/15193824.html
Copyright © 2011-2022 走看看