当前位置: 首页 > news >正文

UVA725 UVALive5362 Division

Regionals 1990 >> North America - East Central NA


这可以说是最快枚举程序,比网上现有的暴力枚举程序要快。


问题链接:UVA725 UVALive5362 Division。基础练习题,用C语言编写程序。

题意简述:输入正整数n,用0~9这10个数字不重复组成两个五位数abcde和fghij,使得abcde/fghij的商为n,按顺序输出所有结果。如果没有找到则输出“There are no solutions for N.”。这里2<=n<=79。

问题分析:没有什么好办法,就暴力枚举吧!不过还是要下点功夫,否则10!的计算量是不可想象的。

1.因为n>=2,且abcde=fghij×n,满足abcde>fghij。若a=0,则fghij的最小值为12345,abcde<fghij,矛盾。所以a≠0。

2.因为a≠0,所以12345<=abcde<=98765,01234<=fghij。

3.因为2≤n且abcde98765,那么fghij = abcde/n,得fghij98765/2=49382,所以01234fghij≤49382。

4.因为12345abcde98765,且01234≤fghij≤49382,所以用fghij进行枚举范围比较小。(这是在任意的n的条件下得出的结论)

5.对于给定的n,因为abcde98765,那么fghij = abcde/n,得fghij≤98765/n。结论:01234≤fghij≤98765/n。

程序说明:(略)


AC的C语言程序如下:

/* UVA725 UVALive5362 Division */

#include <stdio.h>
#include <memory.h>

#define DIGITNUM 10

int check(int abcde, int fghij)
{
    int used[DIGITNUM], d;

    memset(used, 0, sizeof(used));

    if(fghij < 10000)
        used[0] = 1;

    while(abcde) {
        d = abcde % 10;
        if(used[d])
            return 0;
        used[d] = 1;

        abcde /= 10;
    }

    while(fghij) {
        d = fghij % 10;
        if(used[d])
            return 0;
        used[d] = 1;

        fghij /= 10;
    }

    return 1;
}

int main(void)
{
    int n, abcde, count, caseflag=0, end, i;

    while(scanf("%d", &n) != EOF && n != 0) {
        if(caseflag)
            printf("\n");
        caseflag = 1;

        count = 0;
        end = 98765 / n;
        for(i=1234; i<=end; i++) {
            abcde = i * n;
            if(abcde >= 12345 && check(abcde, i)) {
                printf("%05d / %05d = %d\n", abcde, i, n);
                count++;
            }
        }
        if(count == 0)
            printf("There are no solutions for %d.\n", n);
    }

    return 0;
}



转载于:https://www.cnblogs.com/tigerisland/p/7564491.html

相关文章:

  • CentOS下搭建cacti监控
  • 分享磨砺营马剑威讲解-Android N中对java 8的支持
  • SQL数据库查询练习题(更正版)
  • [译]如何构建服务器端web组件,为何要构建?
  • [全文检索]Lucene基础入门.
  • java反射案例讲解
  • 3D空间 圆柱体画线
  • java-什么是可变参数?
  • 关于视图和存储过程的权限问题探究
  • ubuntu 16.04 U盘多媒体不自动弹出
  • Python——学习笔记
  • linux文件与文件夹权限
  • 对话苹果公司的一号员工Bill Fernandez
  • 【完整的App项目】颖火虫笔记
  • iOS - KVO 键值观察
  • 2017届校招提前批面试回顾
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • bearychat的java client
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • php中curl和soap方式请求服务超时问题
  • React Transition Group -- Transition 组件
  • SAP云平台里Global Account和Sub Account的关系
  • Spring Boot MyBatis配置多种数据库
  • Sublime text 3 3103 注册码
  • 阿里研究院入选中国企业智库系统影响力榜
  • 彻底搞懂浏览器Event-loop
  • 大快搜索数据爬虫技术实例安装教学篇
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 缓存与缓冲
  • 机器学习 vs. 深度学习
  • 基于axios的vue插件,让http请求更简单
  • ------- 计算机网络基础
  • 聊聊redis的数据结构的应用
  • 漂亮刷新控件-iOS
  • 十年未变!安全,谁之责?(下)
  • 试着探索高并发下的系统架构面貌
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 我是如何设计 Upload 上传组件的
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • # Panda3d 碰撞检测系统介绍
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (待修改)PyG安装步骤
  • (分布式缓存)Redis分片集群
  • (南京观海微电子)——COF介绍
  • (转)原始图像数据和PDF中的图像数据
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .apk 成为历史!
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET Core 中的路径问题
  • .NET MVC 验证码
  • .NET6 命令行启动及发布单个Exe文件
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?