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;
    }
    
    
    
    
    
  • 相关阅读:
    小程序开发-7-访问api数据与ES6在小程序中的应用
    小程序开发-8-流行页面编码与组件的细节知识
    小程序开发-6-组件数据、事件与属性
    当安装mongodb客户端出现了Failed to load list of databases
    对bluebird的理解
    百度地图实现案例
    iScroll实现下拉刷新上拉加载
    nodejs环境变量配置
    检测Python程序本身是否已经在运行
    用Python快速找到出现次数最多的数据
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451464.html
Copyright © 2011-2022 走看看