zoukankan      html  css  js  c++  java
  • USACO runaround

    /*
    ID:kevin_s1
    PROG:runround
    LANG:C++
    */
    
    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <cstring>
    #include <vector>
    #include <map>
    #include <set>
    #include <algorithm>
    #include <cstdlib>
    #include <list>
    #include <cmath>
    
    using namespace std;
    //直接枚举就可以
    
    //gobal variable====
    long long M;
    int num[100];
    int num_size;
    
    int hash[10];
    int hash1[10];
    //==================
    
    
    //function==========
    int init(long long i){
    	int x = 1;
    	while(i != 0){
    		num[x++] = i % 10;
    		i = i / 10;
    	}
    	x--;
    	for(int i = 1; i <= x/2; i++){
    		int tmp = num[i];
    		num[i] = num[x - i + 1];
    		num[x - i + 1] = tmp;
    	}
    	return x;
    }
    
    bool judge(long long x){
    	for(int i = 1; i <= num_size; i++){
    		hash1[num[i]]++;
    		if(hash1[num[i]] > 1 || num[i] == 0){
    			return false;
    		}
    	}
    	int j = 1;
    	for(int i = 1; i <= num_size; i++){
    		int bit = num[j];
    		j = j + bit;
    		if(j > num_size && (j % num_size) != 0){
    			j = j % num_size;
    		}
    		if(j > num_size && (j % num_size) == 0){
    			j = num_size;
    		}
    		if(hash[j] == 1){
    			return false;
    		}
    		hash[j] = 1;
    	}
    	bool flag = true;
    	if(j != 1)
    		flag = false;
    	for(int i = 1; i <= num_size; i++){
    		if(hash[i] == 0){
    			flag = false;
    			break;
    		}
    	}
    	return flag;
    }
    
    //==================
    
    int main(){
    	freopen("runround.in","r",stdin);
    	freopen("runround.out","w",stdout);
    	cin>>M;
    	memset(num, 0, sizeof(num));
    	memset(hash, 0, sizeof(hash));
    	memset(hash1, 0, sizeof(hash1));
    	M++;
    	num_size = init(M);
    	while(!judge(M)){
    		M++;
    		memset(num, 0, sizeof(num));
    		memset(hash, 0, sizeof(hash));
    		memset(hash1, 0, sizeof(hash1));
    		num_size = init(M);
    	}
    	cout<<M<<endl;
    	return 0;
    }
    

  • 相关阅读:
    Linux系统挂载存储只读改成读写
    Linux kernel调试方法
    Linux设备树文件结构与解析深度分析
    #undef常用法
    Linux驱动中的platform总线分析
    在根文件系统中查看设备树(有助于调试)
    友元及操作符重载
    STM32 FLASH 擦除(以及防止误擦除程序代码)、写入
    C++学习笔记49:栈
    C++学习笔记48:链表的基本操作
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5199221.html
Copyright © 2011-2022 走看看