HDU 3130 Sir Bedavere’s Bogus Division Solutions(数学)

版权声明:本文为博主原创文章,未经博主允许不得转载。vasttian https://blog.csdn.net/u012860063/article/details/40828451

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3130


Problem Description


The wise Sir Bedavere often uses non-standard logic, yet achieves positive results1.Well, it seems he has been at it again, this time with division. He has determined that canceling the common digit of a numerator and denominator produces the correct answer. Of course, Sir Bedavere only tried this on a small sample of three digit numbers. An example of what he did is shown in the following division problem (in which he canceled the common 6):


Your task is to find all three digit number combinations with the following property:

number combinations where removing the rightmost digit from the top number (numerator) and the identical leftmost digit from the bottom number (denominator) leaves the result of the calculation unchanged.

Omit all of the trivial cases — xxx/xxx = xx/xx (222/222 = 22/22). The solutions are to be shown in increasing order of the top number (the numerator).

Hint
1 Please see the scene "How do you know she's a witch?" or recall the quote "…how sheep's bladders may be employed to prevent earthquakes."
 

Input
NONE! There is no input for this problem.
 

Output
Show the bogus division problems one to a line in the format shown below (which gives a sample merely to show the format) — single spaces separate the non-blank characters.
 

Sample Output
217 / 775 = 21 / 75 249 / 996 = 24 / 96
 

Source

PS:

在所有的三位数中,输出分子去掉个位,分母去掉百位后!比例相同的数!

其实也就六个数而已!打表即可!

代码如下一:

#include <cstdio>
int main()
{
    printf("166 / 664 = 16 / 64\n");
    printf("199 / 995 = 19 / 95\n");
    printf("217 / 775 = 21 / 75\n");
    printf("249 / 996 = 24 / 96\n");
    printf("266 / 665 = 26 / 65\n");
    printf("499 / 998 = 49 / 98\n");
    return 0;
}

代码二:

#include <cstdio>
#include <cstring>
int main()
{
    for(int i = 100; i <= 999; i++)
    {
        for(int j = 100; j <= 999; j++)
        {
            int t1 = (i-i%10)/10;
            int t2 = j-j/100*100;
            int x1 = i%10;
            int x2 = j/100;
            if(x1==x2 && i/(j*1.0)==t1/(t2*1.0) && i != j)
            {
                printf("%d / %d = %d / %d\n",i,j,t1,t2);
            }
        }
    }
    return 0;
}


阅读更多
换一批

没有更多推荐了,返回首页