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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux安装mysql5.7.24

    linux安装mysql5.7.24linux安装mysql5.7.24一、卸载mysql安装有三种方式,包括二进制包安装(UsingGenericBinaries)、RPM包安装、源码安装。一般是前两种比较多卸载方法参考Linux->卸载Mysql方法总结,记得卸载干净二、安装建议路径设置按照写的来将下载的压缩包复制到linux服务器/usr/local/路径下(下载地址https://de…

    2022年5月9日
    34
  • navicat生产激活码失败【中文破解版】

    (navicat生产激活码失败)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
    199
  • 错动态链接库(DLL)初始化例程失败。

    错动态链接库(DLL)初始化例程失败。每次关闭一个Excel工作表或Word文档都会出现加载C:\DocumentsandSettings\Administrator\ApplicationData\MicrosoftSha

    2022年7月2日
    26
  • SynchronousQueue详解「建议收藏」

    SynchronousQueue详解「建议收藏」SynchronousQueue是BlockingQueue的一种,所以SynchronousQueue是线程安全的。SynchronousQueue和其他的BlockingQueue不同的是SynchronousQueue的capacity是0。即SynchronousQueue不存储任何元素。也就是说SynchronousQueue的每一次insert操作,必须等待其他线性的remove操作。而每一个remove操作也必须等待其他线程的insert操作。这种特性可以让我们想起了Exchanger

    2022年6月22日
    32
  • addEventListener 用法

    addEventListener 用法addEventListener用法addEventListener用于注册事件处理程序,IE中为 attachEvent,我们为什么讲addEventListener而不讲a

    2022年7月4日
    20
  • 憨批的语义分割重制版6——Pytorch 搭建自己的Unet语义分割平台「建议收藏」

    憨批的语义分割重制版6——Pytorch 搭建自己的Unet语义分割平台「建议收藏」憨批的语义分割13——Pytorch搭建自己的Unet语义分割平台注意事项学习前言什么是Unet模型代码下载Unet实现思路一、预测部分1、主干网络介绍2、加强特征提取结构3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS解析训练自己的Unet模型注意事项这是重新构建了的Unet语义分割网络,主要是文件框架上的构建,还有代码的实现,和之前的语义分割网络相比,更加完整也更清晰一些。建议还是学习这个版本的Unet。学习前言还是快乐的pytorch人。什么是Unet模型Unet是一个

    2022年6月15日
    22

发表回复

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

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