zoukankan      html  css  js  c++  java
  • HDU4662+无

    把目标中的 U 转化为 I。

    又因为 I的个数是有规律的:1 2 4 8 16 。。。再结合可以取消 6 12 18 。。。个I。。。得解

    #include<string.h>
    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<map>
    using namespace std;
    const int maxn = 1000000+5;
    map<int,int>mp;
    void init(){
    	mp.clear();
    	int tt = 1;
    	while( tt<maxn ){
    		mp[ tt ] = 1;
    		int tmp = tt;
    		while( mp[tt]==1&&tmp>=6 ){
    			mp[ tmp ] = 1;
    			tmp -= 6;
    		} 
    		tt *= 2; 
    	}
    }
    int main(){
    	int n;
    	init();
    	scanf("%d",&n);
    	while( n-- ){
    		string s;
    		cin>>s;
    		int ans = 0;
    		int len = s.size();
    		int ans2 = 0;
    		bool f = true;
    		for( int i=1;i<len;i++ ){
    			if( s[i]=='I' ){
    				ans++;
    			}
    			else if( s[i]=='U' ){
    				ans += 3;
    			}
    			else f = false ;
    		}
    		if( mp[ans]==1&&f==true&&s[0]=='M' ) puts("Yes");
    		else puts("No");
    	}
    	return 0;
    }





  • 相关阅读:
    Add Binary
    Java笔记之String
    Java笔记之数组
    Merge Two Sorted Lists
    Remove Nth Node From End of List
    Longest Common Prefix
    Roman to Integer
    Palindrome Number
    Reverse Integer
    _cdel stdcall
  • 原文地址:https://www.cnblogs.com/pangblog/p/3265186.html
Copyright © 2011-2022 走看看