1、设计一个算法,判断一个正的n(n>2)位数是不是回文数,用自然语言描述算法的步骤.(回文数是指从左到右读和从右到左读都是一样的正整数,如191,34543...)2、只有50g和5g的两个砝码,现要称量495g硫磺,该如何设计算法是称量次数最少?需称量多少次?
问题描述:
1、设计一个算法,判断一个正的n(n>2)位数是不是回文数,用自然语言描述算法的步骤.(回文数是指从左到右读和从右到左读都是一样的正整数,如191,34543...)
2、只有50g和5g的两个砝码,现要称量495g硫磺,该如何设计算法是称量次数最少?需称量多少次?
答
#include
/*判断函数
int x:需要判断的自然数
返回值:true:回文;false:不回文
bool F(int x)
{
int k = 1;
while (k * 10 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 的混合