两个关于数学算法的高二的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 20:52:42
1、设计一个算法,判断一个正的n(n>2)位数是不是回文数,用自然语言描述算法的步骤。(回文数是指从左到右读和从右到左读都是一样的正整数,如191,34543...)
2、只有50g和5g的两个砝码,现要称量495g硫磺,该如何设计算法是称量次数最少?需称量多少次?

#include <stdio.h>

/*判断函数
int x:需要判断的自然数
返回值:true:回文;false:不回文
bool F(int x)
{
int k = 1;
while (k * 10 <= x)
k *= 10;
while (k > 1)
{
if (x / k % 10 != x % 10)
return false;
x /= 10;
k /= 100;
}
return true;
}

int main()
{
int t;
while (scanf("%d", &t))
puts(F(t) ? "Yes" : "No");
return 0;
}

自然语言
找到最高位,和最低位比较,不同则说明非回文数。
找到次高位,和次低位比较,不同则说明非回文数。
……

-----

先称出 55g 的硫磺
再用 55g 的硫磺称出另一份 55g 的,混合得到 110g
然后称出 110g 的,混合得 220g
接着混合得 440g
再称一份 55g 的,和 440g 的混合