一次不定方程
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 . 求通解 :
x = x0 + b*t y = y0 - at;
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;