一道趣味数学算法问题

需求 
光照照明高度是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);
   
        }
       
    }
   
   
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/750077/viewspace-2133720/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/750077/viewspace-2133720/

慕课哈工大C语言第五周马克思手稿中的趣味数学题是一道有趣且具有挑战性的数学问题。这个问题是这样描述的:给定一个三位数n,将其个位数、十位数和百位数分别记作a、b和c,然后按照以下公式进行计算:n = a^3 + b^3 + c^3。如果计算结果等于n本身,则称该数为完全立方数。 这个问题需要我们编写程序,将所有的三位数都进行计算,并判断它们是否为完全立方数。代码的实现思路是使用三层循环,分别遍历所有的个位数、十位数和百位数的可能取值,然后计算并判断是否为完全立方数。具体代码如下: ```c #include <stdio.h> int main() { int n, a, b, c; for (n = 100; n <= 999; n++) { a = n % 10; // 取个位数 b = (n / 10) % 10; // 取十位数 c = n / 100; // 取百位数 if(n == (a * a * a + b * b * b + c * c * c)) { printf("%d 是完全立方数\n", n); } } return 0; } ``` 这段代码使用了一个for循环,从100到999遍历所有的三位数。在每次循环中,通过取余和除法操作分别得到该数的个位数、十位数和百位数,并计算它们的立方和。然后,通过if语句判断计算结果是否等于原数n,如果相等,则输出该数是完全立方数。 通过运行这段代码,我们可以得到所有的完全立方数,即153和370。这个问题展示了编程在解决数学问题中的应用,同时也让我们了解到了完全立方数的概念和计算方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值