0
点赞
收藏
分享

微信扫一扫

王道机试指南练习(第二章)

草原小黄河 2022-02-05 阅读 22
c++算法

2.1 枚举

例题2.1

#include <cstdio>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    for (int a = 0; a <= 9; ++a)
    {
        for (int b = 0; b <= 9; ++b)
        {
            for (int c = 0; c <= 9; ++c)
            {
                if (a * 100 + b * 110 + c * 12 == 532)
                {
                    printf("%d %d %d\n", a, b, c);
                }
            }
        }
    }
    system("pause");
    return 0;
}

例题2.2

#include <cstdio>
#include <iostream>
#include <stdlib.h>

using namespace std;

int Reverse(int x)
{
    int revx = 0;
    while (x != 0)
    {
        revx *= 10;
        revx += x % 10;
        x /= 10;
    }
    return revx;
}

int main()
{
    for (int i = 1000; i <= 9999; ++i)
    {
        if (i * 9 == Reverse(i))
        {
            printf("%d\n", i);
        }
    }
    system("pause");
    return 0;
}

例题2.3

#include <cstdio>
#include <iostream>
#include <stdlib.h>

using namespace std;

int Reverse(int x)
{
    int revx = 0;
    while (x != 0)
    {
        revx *= 10;
        revx += x % 10;
        x /= 10;
    }
    return revx;
}

int main()
{
    for (int i = 0; i <= 256; ++i)
    {
        if (i * i == Reverse(i * i))
        {
            printf("%d\n", i);
        }
    }
    system("pause");
    return 0;
}

习题2.1

#include <cstdio>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    int s = 0;
    int x;
    int y;
    int z;
    for (int i; i < 100; i++)
    {
        x = i % 7;
        y = i / 10;
        z = i % 10;
        if (x != 0 && y != 7 && z != 7)
            s += i * i;
    }
    printf("%d\n", s);
    system("pause");
    return 0;
}

习题2.2

#include <cstdio>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    int n;
    printf("请输入持有金额:");
    scanf("%d", &n);
    int cock, hen, chicken;
    for (cock = 0; cock <= n / 5; cock++)
    {
        for (hen = 0; hen <= n / 3; hen++)
        {
            for (chicken = 0; chicken <= 3 * n; chicken++)
            {
                if (cock * 5 + hen * 3 + chicken / 3 == n && cock + hen + chicken == n)
                {
                    printf("买大鸡%d只,买小鸡%d只,买小小鸡%d只\n", cock, hen, chicken);
                }
            }
        }
    }
    system("pause");
    return 0;
}

习题2.3

#include <cstdio>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    int n, x, y, z, i, j;
    bool flag;
    while (cin >> n)
    {
        cin >> x >> y >> z;
        int p = x * 1000 + y * 100 + z * 10; //part of number
        flag = true;
        for (i = 9; i >= 1; --i)
        {
            for (j = 9; j >= 0; --j)
            {
                int num = i * 10000 + p + j;
                if (num % n == 0)
                {
                    printf("%d %d %d\n", i, j, num / n);
                    flag = false;
                    break;
                }
            }
            if (!flag)
                break;
        }
        if (flag)
        {
            printf("0\n");
        }
    }
    return 0;
}
举报

相关推荐

0 条评论