这篇文章主要介绍“c++实例数学算法题分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“c++实例数学算法题分析”文章能帮助大家解决问题。
需求
光照照明高度是100000
一块板子高度固定是50000
入射的点(0,50000) 判断如下点是否在反射和折射线上。反射线按1:2长宽比例 ,折射是按2:1长宽比例。 求要写多少次反射折射线
3<x,y<100000
蚊子即点的数量在0-30000之间
思路 x=2y+c 就是 题里面的无数平行线 c就是偏移量,x平移后的位置。
把给定点带入公式,算出偏移量是否都一样,一样的就是一条线的,
所有不一样的值得个数就是需要的线的个数。
测试数据
3
4
1 50002
2 50002
2 49999
2 50004
6
823 50001
822 50002
823 50002
823 50003
823 50004
823 50004
4
1 99999
2 1
99999 99999
99999 1
#1 2
#2 3
#3 4
*
*/
import java.util.Scanner;
public class Solution {
static int N;
static int[] x = new int[30000];
static int[] y = new int[30000];
static int T;
static int AnswerN;
public static void main(String[] args){
Scanner c = new Scanner(System.in);
T = c.nextInt();
for(int test_case=1; test_case<=T;test_case++){
N = c.nextInt();
for(int i=0;i<N;i++){
x[i]=c.nextInt();
y[i]=c.nextInt();
}
for(int i=0;i<N;i++){
y[i] = y[i] - 50000;
if(y[i]>0){
x[i] = x[i] - y[i]/2;
y[i] = 0;
}
else{
x[i] = x[i] + 2*y[i];
y[i] = 0;
}
}
AnswerN = 1;
for(int i=1;i<N;i++){
boolean fit = false;
for(int j=0;j<i;j++){
if(x[i]==x[j]&&y[i]==y[j]){
fit = true;
break;
}
}
if(!fit) AnswerN++;
}
System.out.println("#"+test_case+" "+AnswerN);
}
}
}
关于“c++实例数学算法题分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。