[原创]钱币问题解答(二元一次不定方程正整数解浅析)

可能很多朋友对不定方程的解法都有一定的了解,我这里只针对钱币问题对一类简单的二元一次不定方程正整数解

做些简单说明,希望会对大家有用。

(严谨的数学推理,要使用一些代数符号。在此为了简单起见,做个直接的例子,说明解答原理)

这里先假设有1分,2分,3分硬币分别是z,x,y个,以下数学推理,请勿与程序表达式一概而论

z+2x+3y=N(你需要键入的硬币总金额) 其中x,y>=0

2x+3y=N-z------------------------------①

设 m=N-z------------------------------------②

综合①② 得

2x+3y=m=m(3-2)

2x+3y=-2m+3m

2x+2m=3m-3y

2(x+m)=3(m-y)

(x+m)/3=(m-y)/2------------------------③

由于2和3互质,所以③两边均是整数。不妨假设这个整数是t

(x+m)/3=t (m-y)/2=t

x=3t-m y=m-2t

x,y>=0

x=3t-m>=0 y=m-2t>=0

t>=m/3---④ t<=m/2---⑤

综合 ④ ⑤得

m/3 <= t <=m/2

到这里很显然,一个t对应一组(x,y) ,有几个t就有几组正整数解(请允许我包括0在内,本题要求)

现在题目就转化成求区间[m/3,m/2]上整数的个数(t只要求整数,这范围是满足x,y取值的范围)

(int)(m/2)-(int)(m/3) 是要求的个数吗?也许在有的时候是对的,但当m/3是整数的时候,显然少算了一个,那正是m/3本身

题目到现在清楚了,当选择一个1分硬币的个数z, 那么N-z就确定了(即m) 计算出这时区间 [m/3,m/2]上整数个数,便是当1分

硬币为z时,所有解的组数。那当然写程序,可以让1分硬币个数从0循环到N 计算出每次的组数,最后的总和便是本题的要求

相信大家已经明白了,用这种方法有如下的程序

#include

#include

void main()

{

long count=0;

int n,leap,i;

int count1,count2;

scanf("%d",&n);

for(i=0;i<=n;i++) /*这里如果循环的是3分硬币的个数,当然计算效率会高不少,可略改for内的程序达到*/

{

leap=0; /*我比较懒就写这个,刚才分析过程得出来的程序*/

count1=(n-i)/2;

count2=(n-i)/3;

if((n-i)%3==0)

leap=1;

count1=(count1-count2)+leap;

count+=count1;

}

printf("%ld\n",count);

getch();

}

程序在(win XP,win-tc)正常运行。附两组数据检验 2934--------718831, 12553-------13137761

c语言 不定方程问题程序,[原创]钱币问题解答(二元一次不定方程正整数解浅析)...相关推荐

  1. c语言不定方程的二元一次,poj1061 - 同余方程,二元一次不定方程

    以前不会解二元一次不定方程的时候不会做,现在会做了. #include #include using namespace std; typedef __int64 int64; void solveT ...

  2. 声波正演c语言程序,二维频率域声波方程正演模拟

    1. 概述 频率域波场正演相对于时间域数值模拟来说,有其自身的优势.首先,在多炮数值模拟情况下,频率域相对于时间域效率更高,每个频率成分的阻抗矩阵只需要计算一次,加入并行计算后可以极大地提高计算效率: ...

  3. 信捷总线11轴伺服程序,本人原创,客户设备完美运行,plc程 序框架逻辑很顺畅,梯形图只有逻辑程序,不包含任何运算,运用大量c语言完美简化程序

    信捷总线11轴伺服程序,本人原创,客户设备完美运行,plc程 序框架逻辑很顺畅,梯形图只有逻辑程序,不包含任何运算,运用大量c语言完美简化程序,伺服采用c语言书写多段速,是伺服运动更柔性化.触摸屏采用 ...

  4. 用C语言写的程序如何控制计算机硬件?

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105042289 计 ...

  5. C语言写的程序如何控制计算机硬件

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105008867 计 ...

  6. python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...

    导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...

  7. 开发语音录入_语言翻译小程序app开发 解决了人们的语言障碍问题

    随着经济的发展,人们经济水平的提高,促进了国际交流越来越频繁,人们出国的次数也是越来越多.但是语言交流也是日常的障碍,给诸多的人带来不便.出国旅游要是语言不通还会影响旅游质量.语言翻译小程序的开发,便 ...

  8. c语言设置程序自动执行,c语言如何设置程序进程执行优先权

    c语言如何设置程序进程执行优先权 使用setpriority()函数设置程序进程执行优先权: 头文件: #include#include 定义函数: int setpriority(int which ...

  9. 【转】 asp.net从视频文件中抓取一桢并生成图像文件的方法 实现多语言本地化应用程序 自动返回上次请求页面...

    asp.net从视频文件中抓取一桢并生成图像文件的方法 http://www.bianceng.cn/webkf/aspx/201012/21428.htm WebUIValidation.js ht ...

最新文章

  1. 为什么我不在微信公众号上写文章
  2. 成都地震了[原创]不断更新
  3. c语言药房系统书写指导书,C语言药房管理系统[文书借鉴]
  4. ip 地址 192.168.1.255 代表( )。_判定IP地址合法性的三种方法
  5. tez安装官方文档整理+翻译
  6. JS笔记:检测客户端(引擎、浏览器、平台、操作系统)
  7. mongo执行逻辑表达式_MongoDB 常用查询操作
  8. ionic 配置java_Ionic 项目配置环境
  9. 通过GitHub Actions构建和部署Jekyll网站
  10. 最小路径问题_BFS
  11. [转载] Visual Studio 2017 VC项目设置 printf 输出到 Console 窗口调试
  12. 一个简单的TCP客户/服务器的程序
  13. 计算机鼠标双击怎么,电脑鼠标双击变成属性怎么办-解决电脑鼠标双击变成属性的方法 - 河东软件园...
  14. C程序的基本组成结构
  15. android 系统打印服务,调用Android本地服务,实现打印pdf文件
  16. 【数字图像处理】Canny边缘检测C语言实现
  17. 都挺好 苏大强C位出道的不只表情包 还有大眼袋
  18. Python中 {:.0f} 格式化输出,{0:^30}什么意思 . format(name))
  19. 分享 | NB-IoT智能井盖传感器
  20. python手机编程输入法_用Python写一个拼音输入法

热门文章

  1. C#软件开发实例.私人订制自己的屏幕截图工具(七)添加放大镜的功能
  2. linux一些常用指令(根据尚硅谷韩顺平老师视频所写,都是自己手打的)
  3. node.js新手入门初学
  4. 知识追踪模型——教育大数据挖掘
  5. 爬取12306网站验证码
  6. 感应电机红外图像数据集(370张)
  7. bzero 与 memset
  8. Unity知识点大汇总
  9. 农业生产适宜性评价之土地资源评价算法
  10. 有一个学计算机男友是什么体验,有一个程序员男朋友是怎样的体验?