一昨日、羅宮で質問を見つけました。
関数の分析式を見つける
中学校の数学とプログラミングの組み合わせは私にとって非常に興味深いものです
コードを投稿する:
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
double x1,x2,y1,y2;
x1= scanner.nextDouble();
y1= scanner.nextDouble();
x2= scanner.nextDouble();
y2= scanner.nextDouble();
String ks="";
String cs;
double k1=(y1-y2);
double k2=(x1-x2);
double c1=-1*x2*y1+x1*y2;
if(k1/k2<0)
ks="-";
if(c1/k2<0)
cs="-";
else if(c1/k2==0)
cs="";
else
cs="+";
k1=Math.abs(k1);
k2=Math.abs(k2);
c1=Math.abs(c1);
if(k2==1)
ks+=(int)k1;
else
{
if(k1%k2==0)
ks+=(int)(k1/k2);
else
ks+=(int)k1+"/"+(int)k2+"*";
}
if(k2==1&&c1!=0)
cs+=(int)c1;
if(k2!=1&&c1!=0)
{
if(c1%k2==0)
cs+=(int)(c1/k2);
else
cs+=(int)c1+"/"+(int)k2;
}
System.out.println("y="+ks+"x"+cs);
}
}
問題解決の詳細:
- 分数の存在を考慮する必要があり、プログラムはそれを直接計算します。
- 符号を考慮する必要があります。負の数の正しい位置です。kが負でない場合は符号が無視され、cが0の場合は符号が省略されます。
- y = k・x + cでcが0の場合は省略
- スコアリング時にスコアが6/2の場合、3に変換する必要があります
- cの分母が0と見なされない場合、分子は0、cは0、cは記述せずに省略されます。
- 整数* xの場合:乗算記号は省略されます。例:2x
詳細は行われていません:
- 特定の解が整数でない場合、それはggである可能性があります
- kが0であることを考慮せずに...
問題解決のアイデア:
分数が存在するため、kとcの代わりにxとyを分
数式に代入することしかできません:
k =(y1-y2)/(x1-x2)
c =(-1 * x2 * y1 + x1 * y2) /(x1-x2)
このようにして、kとcは2つのxyによって得られます。
式の起源:
Kは連立方程式で求めることができ、cはkの式をcの式に代入することで得ることができます。
スロープポイントは後で覚えただけで、最初に感じたのは(昔ながらのスカム)をなくすことでした
シンボルの判断:
分子を分母で直接割ります。商が0未満の場合、負の数になります。
Xiaobaiのように、ここに書いてみましょう。完璧ではないと感じます。Luoguの入力は整数である必要があります。