zoukankan      html  css  js  c++  java
  • 2018 CCPC 中国大学生程序设计竞赛-网络选拔赛 1004(D题 )Find Integer(三角函数+费马大定理)

    就是给你n,a求出一组b,c满足a ^ n + b ^ n = c ^ n

    由于费马大定理得:当n> 2时,此方程式无解,

    然后观察 当n = 0时,显然无解,

    所以我们只需要讨论n = 1和n = 2的情况,  

    n = 1的时,随便写个答案就行了,

    n = 2的时,这里需要运用到勾股定理的一点技巧:

    1,当a为大于1的奇数2n + 1时,b = 2 * n ^ 2 + 2 * n,c = 2 * n ^ 2 + 2 * n + 1. 
    实际上就是把a的平方数拆成两个连续自然数,例如: 
    n = 1时(a,b,c)=(3,4,5) 
    n = 2时(a,b,c)=(5,12,13) 
    n = 3时( a,b,c)=(7,24,25) 
    ...... 
    这是最经典的一个套路,而且由于两个连续自然数必然互质,所以用这个套路得到的勾股数组全部都是互质的 
    .2,当a为大于4的偶数2n时,b = n ^ 2-1,c = n ^ 2 + 1 
    也就是把a的一半的平方分别减1和加1,例如: 
    n = 3时(a,b,c)=(6,8,10) 
    n = 4时(a,b,c)=(8,15,17) 
    n = 5时(a,b,c)=(10 ,24,26) 
    n = 6时(a,b,c)=(12,35,37) 
    ......

     所以n = 2的时,用公式就可以得出结果了,这样就不存在超时的问题了。

    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
    	long long n,m,j,k,i,T,a,b,c;
    	scanf("%lld",&T);
    	while (T--)
    	{
    		scanf("%lld%lld",&n,&a);
    		if (n>2 || n==0)
    		{                                      
    			printf("-1 -1
    ");        
    		}   
    		else if (n==1)           
    		{
    			printf("1 %lld
    ",a+1);
    		}
    		else if (n==2)
    		{
    			bool flag=0;
    			if (a%2!=0)
    			{
    				long long x = (a-1)/2;
    				long long b = 2*x*x+2*x;
    				long long c = 2*x*x+2*x+1;
    				printf("%lld %lld
    ",b,c);
    				flag=1;
    			}
    			
    			else if (a%2==0)
    			{
    				long long x = a/2;
    				long long b = x*x-1;
    				long long c = x*x+1;
    				printf("%lld %lld
    ",b,c);
    				flag=1;
    			} 
    			if (flag==0)
    			printf("-1 -1
    ");
    				
    		}
    			
    	}
    	return 0;
    }
    
    
    
    
    
  • 相关阅读:
    Jmeter 批量执行脚本之-----------Ant
    Linux之vi编辑器的使用
    Linux命令之-ps & kill
    Linux命令详解一:基础命令新建、删除、拷贝~~~
    Linux(Ubuntu)下安装jdk
    Lr-代理录制
    开通博客第一天
    找出列表中重复的元素及个数
    写一个密码校验程序,密码格式为含有大写、小写字母、数字,长度为8位
    创建数据,分页显示,输入要查看的页码,显示指定数据,每页显示10条数据
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451464.html
Copyright © 2011-2022 走看看