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

UVA10976 Fractions Again?!

即便是暴力枚举,也需要进行数学推导,尽可能减小枚举的范围。

问题链接:UVA10976 Fractions Again?!。入门练习题,用C语言编写程序。

题意简述:输入正整数k,求满足1/k=1/x+1/y并且x≥y的正整数对x和y。

问题分析:先枚举y,因为x≥y,其范围小。其他要点如下:

1.因为1/k=1/x+1/y且x>0,所以1/k>1/y,得y>k;

2.x≥y,有1/x1/y,且1/k=1/x+1/y,所以1/k-1/y1/y,得y2k;

3.这样只需要y在k+1到2k之间枚举试算即可;

4.因为1/k=1/x+1/y,得x=ky/(y-k)。

程序说明:枚举试算过程中,必须满足ky/(y-k)是整数,并且x≥y。由于还要统计满足条件的整数对有多少,并且还有先输出,所以使用了数组ansx[]和ansy[]。不使用数组的话,就需要算两遍,第1遍先统计数量,第2遍计算x和y。

AC的C语言程序如下:

/* UVA10976 Fractions Again?! */

#include <stdio.h>

#define MAXN 10000

int main(void)
{
    int k, x, y, end, sum, ansx[MAXN], ansy[MAXN];

    while(scanf("%d", &k) != EOF) {
        sum=0;

        end = 2 * k;
        for(y=k+1; y<=end; y++){
            if((y * k) % (y - k) == 0){
                x = (y * k) / (y - k);
                if(x >= y) {
                    ansx[sum] = x;
                    ansy[sum] = y;
                    sum++;
                }
            }
        }

        printf("%d\n",sum);
        for(x=0; x<sum; x++)
            printf("1/%d = 1/%d + 1/%d\n",k, ansx[x], ansy[x]);
    }

    return 0;
}


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

相关文章:

  • 关于ECC内存
  • shell脚本实例(2)
  • WinForm 窗体属性
  • Javascript弹出层-初探
  • Java json工具类,jackson工具类,ObjectMapper工具类
  • PostgreSQL 最佳实践 - 任意时间点恢复源码分析
  • 第一次作业p7 1-1 1-2 1-6
  • 华为VRRP配置
  • 你掌握的技术排第几?
  • 解决mysql 1062 主从错误
  • LINKEDSERVER 与 ALIAS
  • while、dowhile、switchcase 循环嵌套、穷举、迭代
  • Git安装
  • 你真的了解UIScrollView吗?
  • Python中的split()函数的使用方法 详解
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 「译」Node.js Streams 基础
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android单元测试 - 几个重要问题
  • ES6之路之模块详解
  • Java面向对象及其三大特征
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • opencv python Meanshift 和 Camshift
  • React16时代,该用什么姿势写 React ?
  • spring security oauth2 password授权模式
  • SQLServer插入数据
  • 高度不固定时垂直居中
  • 回顾2016
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 看域名解析域名安全对SEO的影响
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何使用 JavaScript 解析 URL
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #HarmonyOS:软件安装window和mac预览Hello World
  • $L^p$ 调和函数恒为零
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (算法)Game
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 物件導向與老子思想 (OO)
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net6 webapi log4net完整配置使用流程
  • .net打印*三角形
  • .NET开发者必备的11款免费工具
  • .stream().map与.stream().flatMap的使用
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @Transactional类内部访问失效原因详解