作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 申请QC
时间Thu Mar 3 10:40:42 2011
※ 引述《justinj (闇冥)》之铭言:
: 在31的 /u/j/justinj/area/math/
: room/test/,question2.h的不用管它
: 写的时候发现原来#define也有上限..
: 迪菲尔大陆写不完,先写小区域来..amem
取余数使用的运算元是 %
例如 10除以3 余数多少就是用 10%3 去得到.
联立方程式问题, 若是简单的二元一次联立方程式, 例如..
1a + 1b = 30 mixed f = ({ ({ 1,1,30 }),
2a + 4b = 62 ({ 2,4,62 }) });
将 f 传去解联立方程式专用的 sf 函数, 如下.
下面的函数, 是将第一式先乘以 2, 第二式先乘以 1, 这就变成
2a + 2b = 60
2a + 4b = 62
再将 2b 跟 4b 的 2 跟 4 相减、60 跟 62 相减, 各得到 2 跟 2
这时计算 b = 2 / 2 = 1
再计算 a = (60 - 2*1) / 2 = 29
然後回传 ({ 29, 1 })
mixed sf(mixed f)
{
int f1=f[0][0], f2=f[1][0];
int i,j,k,a,b;
for(i=0;i<3;i++)
{
k=f[0][i];
k=k*f2;
f[0][i]=k;
}
for(i=0;i<3;i++)
{
k=f[1][i];
k=k*f1;
f[1][i]=k;
}
i=f[1][1]-f[0][1];
j=f[1][2]-f[0][2];
b=j/i;
a=(f[0][2] - f[0][1]*a)/f2;
return ({a,b});
}
上面改良一下也可以解单纯的 N元一次联立方程式.
直角三角型问题, 最好说明一下给的两边是否有斜边, 可简化为
求斜边(即特定边)是比较适当的方式, 则问题简化如下..
int c = sqrt(a^2 + b^2);
求最大公因数问题可使用辗转相除法, 利用递回 or while 回圈
来写.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.80.210.242
1F:推 justinj :我有写整数边...avert 03/03 10:59