uva 10825 – Anagram and Multiplication(暴力)

uva 10825 – Anagram and Multiplication(暴力)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

题目链接:uva 10825 – Anagram and Multiplication

题目大意:给出m和n,要求找一个m位的n进制数,要求说该数乘以2~m中的随意一个数的结果是原先数各个位上数值的一个排序。

解题思路:枚举最后一位数。然后用这个数去乘以2~m并对n取模。然后得到的数一定就是这个数的组成,暴力搜索一下并推断。

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int maxn = 405;
const int maxm = 10;

int m, n, a[maxn], v[maxn], ans[maxm];

bool check (int x, int* b) {
    memset(a, 0, sizeof(a));
    int tmp = 0;

    for (int i = m-1; i >= 0; i--) {
        tmp = tmp + x * b[i];

        int k = tmp % n;
        a[k]++;
        tmp = tmp / n;

        if (a[k] > v[k])
            return false;
    }

    return tmp == 0;
}

bool judge (int x) {
    int tmp = 0;
    memset(v, 0, sizeof(v));

    for (int i = 0; i < m; i++) {
        tmp = (x + tmp) % n;
        ans[i] = tmp;
        v[ans[i]]++;
    }

    swap(ans[0], ans[m-1]);

    sort(ans, ans + m - 1);
    do {
        bool flag = true;
        if (ans[0] == 0)
            continue;
        for (int i = 2; i <= m; i++) {
            if (check(i, ans)) 
                continue;
            flag = false;
            break;
        }

        if (flag)
            return true;

    } while (next_permutation(ans, ans + m - 1));

    return false;
}

int main () {
    while (scanf("%d%d", &m, &n) == 2 && n + m) {
        bool flag = true;
        for (int i = 1; i < n; i++) {
            if (judge(i)) {
                flag = false;
                break;
            }
        }

        if (flag)
            printf("Not found.\n");
        else {
            printf("%d", ans[0]);
            for (int i = 1; i < m; i++)
                printf(" %d", ans[i]);
            printf("\n");
        }
    }
    return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117169.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NOIP 2011 计算系数

    NOIP 2011 计算系数数论

    2022年9月2日
  • maven 打包命令的使用

    maven 打包命令的使用maven打包参数clean:clean能够保证上一次构建的输出不会影响到本次构建。package:命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库install:命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库deploy:命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其.

    2022年5月29日
  • 虚拟机VMware和宿主机连接[通俗易懂]

    虚拟机VMware和宿主机连接[通俗易懂]虚拟机和宿主机连接

    2022年8月20日
  • MMC 卡驱动分析[通俗易懂]

    MMC 卡驱动分析[通俗易懂]最近花时间研究了一下MMC卡驱动程序,开始在网上找了很多关于MMC卡驱动的分析文章,但大都是在描述各个层,这对于初学者来讲帮助并不大,所以我就打算把自己的理解写下来,希望对大家有用。个人觉得理解LINUX内核当中MMC/SD卡驱动程序构架是学习MMC卡驱动程序的重点,只有理解了它的基本框架或流程才能真正理解一个块设备驱动程序的写法,同时才能真正理解LINUX设备驱动模型是如

    2022年6月14日
  • idea 2022.01 mac 激活(注册激活)2022.01.19

    (idea 2022.01 mac 激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0HKLM1UCCY-eyJsaWNlb…

    2022年3月31日
  • noip2018提高组初赛解析_NOIP提高组

    noip2018提高组初赛解析_NOIP提高组题目背景NOIP2012提高组DAY2试题。题目描述H国有n个城市,这n个城市用n-1条双向道路相互连通构成一棵树,1号城市是首都,也是树中的根节点。H国的首|都爆发了一种危害性极高的传染病。当局为了控制疫情,不让疫情扩散到边境城市(叶子节点所表示的城市),决定动用军队在一些城市建立检查点,使得从首都到边境城市的每一条路径上都至少有一个检查点,边境城市也可以…

    2022年8月22日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号