题目描述
The ternary expansion of a number is that number written in base 3. A number can have more than one ternary expansion. A ternary expansion is indicated with a subscript 3. For example, 1 = 13 = 0.222…3, and 0.875 = 0.212121…3.
The Cantor set is defined as the real numbers between 0 and 1 inclusive that have a ternary expansion that does not contain a 1. If a number has more than one ternary expansion, it is enough for a single one to not contain a 1.
For example, 0 = 0.000…3 and 1 = 0.222…3, so they are in the Cantor set. But 0.875 = 0.212121…3 and this is its only ternary expansion, so it is not in the Cantor set.
Your task is to determine whether a given number is in the Cantor set.
输入
The input consists of several test cases.
Each test case consists of a single line containing a number x written in decimal notation, with 0 <= x <= 1, and having at most 6 digits after the decimal point.
The last line of input is END. This is not a test case.
输出
For each test case, output MEMBER if x is in the Cantor set, and NON-MEMBER if x is not in the Cantor set.
样例输入
0
1
0.875
END
样例输出
MEMBER
MEMBER
NON-MEMBER
参考代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int i,t;
double x;
char a[9];
while(gets(a),strcmp(a,"END"))
{
x=atof(a);
t=0;
if(x==0||x==1)
printf("MEMBERn");
else
{
i=13;
while(i--)
{
x=(x-(int)x)*3;
if((int)x==1)
{
printf("NON-MEMBERn");
t++;
break;
}
}
if(t==0)
printf("MEMBERn");
}
}
return 0;
}
解析
暂无