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;