calfcamel的2333:为祝贺新一批的研究生入学,队长让大家为新人命题训练其程序设计能力。有人问队长能不能黑,队长说可以黑但是不能黑那啥。大家很失望 2333...

题面描述

为祝贺新一批的研究生入学,队长让大家为新人命题训练其程序设计能力。有人问队长能不能黑,队长说可以黑但是不能黑那啥。大家很失望 2333,于是 calfcamel 决定出一道 2333 的题目。给你一个小于 60 位的整数 p ,求大于 p 的最小的数 p1 ,使得 p1 中包含数 2333 。

输入数据

输入数据的第一行为一个正整数 T ,表示有 T 组数据。随后的 T 行中每行包括一个小于 60 位的整数 p ( T <= 50 , 1<= p <10^60 ,即 10 的 60 次方)。

输出数据

对每组输入数据单独输出一行结果,第 x 行结果形如 ”Case #x: a“ ,其中 x 为组号,从 1 开始, a 为对应的结果。

样例输入

2
100
1000000000000

样例输出

Case #1: 2333
Case #2: 1000000002333

心得:
1.注意审题题目是求大于 p 的包含 2333 的数
2.p 包含 2333 时每增加 10000 一定会出现 2333,p 不包含 2333 时每增加 9999 一定会出现 2333,可能 是 最后4位,可能是后五位去掉最后一位,可能是后六位去掉最后两位,可能是后七位去掉最后三位,可能是后八位去掉最后4位
3.也可以用 “while 1” 循环相加,但是其实此题循环次数是已知范围

# 方法 1
T = int(input())
for t1 in range(T) :    
    inputStr = input()    
    if inputStr != "":        
        p = int(inputStr)
        if '2333' in inputStr:            
            maxN = 10000        
        else:            
            maxN = 9999        
        for n in range(maxN):                
            p += 1                
            if '2333' in str(p):                    
                break 
        print("Case #%d: %d" % (t1 + 1 , p))    
    else:        
        break
# 方法 2
T = int(input())
for t1 in range(T) :    
    inputStr = input()    
    if inputStr != "":        
        p = int(inputStr)
        if '2333' in inputStr:            
            p = p        
        while 1:            
            p += 1            
            if '2333' in str(p):                
                break        
        print("Case #%d: %d" % (t1 + 1 , p))    
    else:        
        break

猜你喜欢

转载自blog.csdn.net/tianxiefenxiang/article/details/107353307