0

# include<stdio.h>

int *is_trans(int trans);

void main()
{
int number[3],i,j,k,m,trans,*p,y;

``````for (i = 1;i < 7;i++)
{
for (j = 0;j < 7;j++)
{
for (k = 0;k < 7;k++)
{
number[0] = i;
number[1] = j;
number[2] = k;
trans = i * 49 + j * 7 + k;
p = is_trans(trans);

for (m = 0;m < 3;m++)
{
if (number[m] == p[m])
y = 1;
else
{
y = 0;
break;
}
}

if (y == 1)
{
printf("%d",trans);
break;
}
}

}

}``````

}
int *is_trans(int trans)
{
int b[3],q,i;

``````i = 2;

for (trans;trans != 0;)
{
q = trans % 9;
trans /= 9;
b[i] = q;
i--;

if (i < 0)
break;

}

return b;``````

}

shmily涂 | 初学一级 | 园豆：22

0

wwr01 | 园豆：641 (小虾三级) | 2019-11-15 09:26

0

int m=67^2+67+6;
for(int i=0;i<=m;i++){
int a1=foo(i,7);//7进制
int a2=foo(i,9);//9进制

if(a1str==a2str reverse){ //反转比较

}
}

gw2010 | 园豆：1399 (小虾三级) | 2019-11-15 10:15
1

``````def convert(num: int, notation: int) -> list:
l = []
while num >= notation:
mod = num % notation
l.insert(0, mod)
num = num // notation
l.insert(0, num)
l.reverse()
return l

def reverse_equal(l1:list, l2:list) -> bool:
l1.reverse()
l1_count = len(l1)
for i in range(l1_count):
if l1[i] != l2[i]:
return False
return True

def fuck() -> list:
l = []
for i in range(101, 325):
l7 = convert(i, 7)
l9 = convert(i, 9)
if reverse_equal(l7, l9):
l.append(i)
return l

if __name__ == "__main__":
l = fuck()
print(l)``````

1. 一个方法里不要有太多的逻辑（一个方法应该只干一件事情），你的main方法里逻辑太多了，建议拆分出一个函数专门判断一个数的7进制和9进制是否符合要求
2. 你遍历了所有3位的7进制数，其实可以预先算出一个范围来，这样效率会高些。

您需要登录以后才能回答，未注册用户请先注册