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)
上一篇 2022年1月9日 下午7:00
下一篇 2022年1月9日 下午8:00


相关推荐

  • ip地址是什么意思_手机ip显示归属地还是显示本地

    ip地址是什么意思_手机ip显示归属地还是显示本地如何通过IP找到地址?在我们印象中,我们都知道可以通过IP地址找到某个人。但当我们细想一下,我们会发现其实IP地址与地理位置并不是直接相关的。那我们到底是如何通过IP地址找到地址的呢?答案是:通过自治系统(AutonomousSystem)。互联网是由不同网络组成的网络,自治系统是组成Internet的大型网络,连接到Internet的每台计算机或设备都连接到一个AS。而每一个自治系统都会有一个编码,我们称之为ASN。…

    2025年11月16日
    5
  • 服务器硬件工程师从入门到精通系列视频教程(1)-基础篇-赵振坤-专题视频课程…「建议收藏」

    服务器硬件工程师从入门到精通系列视频教程(1)-基础篇-赵振坤-专题视频课程…「建议收藏」本课程会详细讲解服务器硬件的基本概念和分类,服务器的硬件组成和相关技术,服务器的硬件组装和软件安装流程,服务器的BIOS设置和固件更新以及板载RAID的配置,服务器操作系统和驱动程序的安装,服务器远程管理功能配置,以及服务器硬件启动过程和常见硬件故障的排除。…

    2022年10月20日
    4
  • Angular项目中使用echarts中国地图

    Angular项目中使用echarts中国地图首先要在 Angular 项目中安装 echarts 的依赖 npminstallec echartssave 第二 在创建包含地图的 Angular 组件的时候引入 echarts 插件和包含的地图插件 并完成配置和初始化 主要有两种方式 第一种方式 通过 JSON 方式引入 步骤如下 1 引入 http

    2026年3月26日
    2
  • 最小角回归算法定义_有无回归算法

    最小角回归算法定义_有无回归算法最小角回归算法(LeastAngleRegression,LAR)是一种针对于线性回归问题,快速进行特征选择和回归系数计算的迭代算法,其被广泛推广用于求解线性回归以及Lasso回归问题。最小角回归算法的核心思想为:将回归目标向量依次分解为若干组特征向量的线性组合,最终使得与所有特征均线性无关的残差向量最小。可见,最小角回归算法的关键在于选择正确的特征向量分解顺序和分解系数。为了更好的表示最…

    2022年8月21日
    9
  • 浅析 DDD 领域驱动设计

    浅析 DDD 领域驱动设计前言最近公司一场有关于领域驱动设计的技术分享会 引起了我的注意 主要讲解了服务的划分 RestfulAPI 的设计 如何将抽象具有统一业务的范畴的 Model 使其模块化 同时能够提炼组合多个模块 使得业务能够独立服务化 在软件开发中如何降低系统的复杂度是一个永恒的挑战 在之前都是通过一系列的设计模式或者范例来降低一些比较常见的复杂度 这些都是通过技术手段来解决技术问题 没有从根本上解决业务上的问题 但是在 03 年 EricEvans 的 DomainDriven 中 才是真正的从业务的

    2026年3月17日
    2
  • bootstrap table editable 文档_bootstrap复选框样式

    bootstrap table editable 文档_bootstrap复选框样式问题描述:采用bootstrap中的table进行页面布局,然后通过ajax请求数据源,然后动态添加表格内容。添加时,采用的自己拼接字符串,然后追加到表格中。结果发现bootstrap的表格样式没有生效。页面代码:消费类别描述消费数量消费时间JS代码:$.ajax({ty

    2026年2月3日
    6

发表回复

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

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