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


相关推荐

  • Nginx负载均衡策略_nginx高可用集群和负载均衡集群

    Nginx负载均衡策略_nginx高可用集群和负载均衡集群nginx的负载均衡策略有4种:轮询(默认)最基本的配置方法,它是upstream的默认策略,每个请求会按时间顺序逐一分配到不同的后端服务器。参数有:项目Valuefail_timeout与max_fails结合使用max_fails设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了fail_time服务器会被认为停机的时间长度,默认为10s。backup标记该服

    2022年10月13日
    4
  • Super 关键字

    Super 关键字

    2021年9月29日
    36
  • Random的nextInt()用法「建议收藏」

    Random的nextInt()用法「建议收藏」Random的nextInt()用法一、先看这样一个有趣的题目:1、设计一个密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码。2、分别以1、2、3作为种子数创建Random对象,生成六位随机密码进行测试。问题答案核心代码如下:importjava.util.Random;importjava.util.Scanner;publicclassRandomT…

    2022年7月23日
    10
  • Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    2021年10月24日
    36
  • 聚类方法 学习总结

    聚类方法 学习总结1.重点归纳1)聚类的核心概念是相似度(similarity)或距离(distance),有多种相似度或距离的定义。因为相似度直接影响聚类的结果,所以其选择是聚类的根本问题。(1)闵可夫斯基距离(Minkowskidistince),p=2时为欧氏距离,p=1时为曼哈顿距离。(2)马哈拉诺比斯距离(马氏距离)(3)相关系数(4)余弦相似度2)类与类之间的距离(1…

    2022年8月30日
    8
  • Ubuntu20.04的主题美化

    Ubuntu20.04的主题美化  在正式开始之前先放一下效果图,当然,这里的主题是模仿了mac,网上有各式各样的主题,可以根据自己的喜好来进行设置

    2025年11月21日
    5

发表回复

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

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