若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1150: Persistent Numbers

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,462

题目描述

1
2
3
4
5
6
7
8
9

1
 1
 2
 3
 4
 5
 6
 7
 8
 9

2
 2
 4
 6
 8
10
12
14
16
18

3
 3
 6
 9
12
15
18
21
24
27

4
 4
 8
12
16
20
24
28
32
36

5
 5
10
15
20
25
30
35
40
45

6
 6
12
18
24
30
36
42
48
54

7
 7
14
21
28
35
42
49
56
63

8
 8
16
24
32
40
48
56
64
72

9
 9
18
27
36
45
54
63
72
81

The multiplicative persistence of a number is defined by Neil Sloane (Neil J.A. Sloane in
The Persistence of a Number
published in Journal of Recreational Mathematics 6, 1973, pp. 97-98., 1973) as the number of steps to reach a one-digit number when repeatedly multiplying the digits. Example:

679 -> 378 -> 168 -> 48 -> 32 -> 6.

That is, the persistence of 679 is 5. The persistence of a single digit number is 0. At the time of this writing it is known that there are numbers with the persistence of 11. It is not known whether there are numbers with the persistence of 12 but it is known that if they exists then the smallest of them would have more than 3000 digits.
The problem that you are to solve here is: what is the smallest number such that the first step of computing its persistence results in the given number?
For each test case there is a single line of input containing a decimal number with up to 1000 digits. A line containing -1 follows the last test case. For each test case you are to output one line containing one integer number satisfying the condition stated above or a statement saying that there is no such number in the format shown below.

输入

暂无

输出

暂无

样例输入

0
1
4
7
18
49
51
768
-1

样例输出

10
11
14
17
29
77
There is no such number.
2688

参考代码

#include <stdio.h>
#include <string.h>
int i,j,k,m, mm[12];
char buf[2000];
char *p;
char *t[] = {"C","C#","D","D#","E","F","F#","G","G#","A","A#","B"};
main() 
{
    for (i=0;i<12;i++) 
    {
        mm[i] |= (1<<((i+0)%12));
        mm[i] |= (1<<((i+2)%12));
        mm[i] |= (1<<((i+4)%12));
        mm[i] |= (1<<((i+5)%12));
        mm[i] |= (1<<((i+7)%12));
        mm[i] |= (1<<((i+9)%12));
        mm[i] |= (1<<((i+11)%12));
    }
    while (gets(buf)) 
    {
        if (!strcmp(buf,"END")) break;
        m = 0;
        for (p=strtok(buf," ");p;p=strtok(NULL," ")) 
        {
            for (i=0;i<12 && strcmp(p,t[i]);i++);
            m |= (1<<i);
        }
        for (k=i=0;i<12;i++) 
        {
            if (!(m & (~mm[i]))) 
            {
                if (k++) printf(" ");
                printf("%s",t[i]);
            }
        }
        printf("n");
   }
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Dreams孤独患者 Skip 原站点
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist