【蓝桥杯学习记录】【6】不定方程的解法

一次不定方程 

4 * x - 5 * y = 7;

ax + by = c;         a = 4 , b = -5 , c = 7; 
ax = c - by;
 
1 .先求一个特殊解    x0  y0 
(先不管 x,(c - by)一定能被 a 整除 , 所以先求一个特殊解)
        2 . 求通解 :
#include <iostream>
#include <cstdio>
#include <string.h>
#include <iomanip>
#include <math.h>
#include <stdlib.h>
#include <algorithm>

#define PI atan(1.0)*4

using namespace std;

int main()
{	
	//一次不定方程 
	
	/*
	4 * x - 5 * y = 7;
	for(int x = 0; x < 100; x++)
	for(int y = 0; y < 100; y++)
	{
		if(4 * x - 5 * y == 7)
			cout << "x: " << x << " y: " << y << endl;
	}
	*/
	
	// ax + by = c;        // a = 4 , b = -5 , c = 7; 
	// ax = c - by;
	 
	// 1 .先求一个特殊解    x0  y0 
		//(先不管 x,(c - by)一定能被 a 整除 , 所以先求一个特殊解)
	// 2 . 求通解 :		x = x0 + b*t 	y = y0 - at; 
	int a = 4 , b = -5 , c = 7;
	for(int y = 0; y < 100; y++)
	{
		if( (c - b*y) % a == 0)
		{
			cout << "x : " << (c - b*y) / a << ",  y : " << y << endl;
			break;
		}
			
	}
	
	
	//买不到的数目
	// ax + by = c;  x, y为整数  a, b互质
	
	
	/** 21位花朵数 水仙花数 **/
	
	// n = 3时, 153就满足条件,  1^3 + 5^3 + 3^3 = 153
	// n = 4时, 1634就满足条件,  1^4 + 6^4 + 3^4 + 4^4= 1634
	// n = 5时, 92737就满足条件
	
	//求 N = 21 时, 所有可能的数字(从小到大)
	
	//暴力 ——搜索次序 0 ~ 9 
	//左边所有数的和 与他们的出现次序没有关系 只与每个数出现的次数有关系
	
	//用一个数组记录每一个数字出现几次 
	//递归的方法确定一个数出现多少次 并球21次方 的和
	//结束分配则进行比较
	//看看所求的和中每个数字出现的次数和之前分配的次数是否一样
	
	//注意 : java可以使用BigInt  c语言则更麻烦 因为long long int最多19位 只能类似于字符串加减
	
	
	
	/** 六角幻方 **/ 
	/*
		*	*	*
	  *   *   *   *
	 *  *   *   *   *
	  *   *   *   *
	   *	*	*
	1 ~ 19 19个整数排列
	要求每条直线上的数字的和 全都相等 
	
	//线性方程 高斯消元法  消的左边矩阵只剩下对角线上的元素 其他全为0
	
	//在加的过程中 每个数都被加了3次    所以可以求出15行 每一行的和是多少 
	//cout << 19*20/2*3/15;
	//即 19*20/2*3/15 = 38 ;
	
	//先初始化(行、列)   再高斯消元  显示消元结构 最后查找输出 
	*/ 
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	//00:42:09 
	
	return 0;
}




x = x0 + b*t y = y0 - at; 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值