码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces #275 div2题解

时间:2014-10-28 08:08:53      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   ar   for   sp   div   

A题目大意:

     给你l,r,问你在l~r之间,是否存在 a和b互质 , b和c互质 ,但是 a,c不互质 的情况;其中l<=a<b<c<=r;如果存在,就输出a,b,c;不存在就输出-1;

    其中(1 ≤ l ≤ r ≤ 1018; r - l ≤ 50).

   

- -r-l<=50,这么水我也是醉了,开个longlong , 枚举他们是否满足以上要求即可,顺便复习了一下辗转相除;

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
long long l,r;
int gcd(long long a,long long b){
	if(b==0) return a;
	else return gcd(b,a%b);
}
int main(){
	cin>>l>>r;
	for(long long i=l;i<=r;i++)
	   for(long long j=i+1;j<=r;j++)
	       for(long long k=j+1;k<=r;k++){
	       	  if(i!=j && i!=k && j!=k){
	       	  	  if(gcd(j,i)==1 && gcd(k,j)==1 && gcd(k,i)!=1){
	       	  	  	 cout<<i<<" "<<j<<" "<<k;
	       	  	  	 return 0;
	       	  	  }
	       	  }
	       }
	cout<<"-1";
	return 0;
} 

 

B题大意:

你给第一个朋友cnt1个数,给第二个朋友cnt2个数,在给第一个朋友的数不可以被x整除,给第二个朋友的数不可以被y整除,如果某个数既不能被x整除也不能被y整除,那么它不能同时出现在两个朋友的数里

然后你得在1.2.3.....n中选出符合要求的cn1个数和cnt2个数,问你最小的n为多少?

 

感觉这套的B题好坑啊- -(其实是自己弱....)

刚开始以为枚举就好了,B题嘛反正,然后还是超时了;之后觉得那就优化一下暴力好了- -结果还是不行;

后面想到利用余数,例如 x个数里,可以有x-1不被x整除的数之类的,但是处理出来的答案还是会有偏差

然后实在没有办法了!就看了别人的代码!- - 妈蛋...自己都想到用余数了都,还不知道要二分答案!我个傻逼....

 

以上是我的傻逼的思考过程,- -说说这一题的正确思路,就是常规的二分答案;

如果验证是否可行呢?(方法有很多,这里说一下我的思路)

如果那个数

 

   

codeforces #275 div2题解

标签:style   blog   io   color   os   ar   for   sp   div   

原文地址:http://www.cnblogs.com/polebug/p/4055587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!