Heim  >  Artikel  >  Web-Frontend  >  Codeforces #275 div2_html/css_WEB-ITnose

Codeforces #275 div2_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:54:361032Durchsuche

链接:codeforce #275 div2

A.Counterexample

题意:给定左右区间[l,r],求区间内的三个数a,b,c使得a与b互质,

b与c互质,但a与c不互质,若不存在,输出-1

分析:找连续的偶奇偶序列即可

#include<stdio.h>int main(){    __int64 l,r;    scanf("%I64d%I64d",&l,&r);    if(l%2)        l++;    if(r-l  <br>  <p></p>  <p>B.Friends and Presents</p>  <p>题意:构造两个序列,第一个序列要有cnt1个数且其中不能有x的倍数,</p>  <p>第二个序列要有cnt2个数且其中不能有y的倍数。两个序列不能有相同的数,</p>  <p>要求求出这两个序列中的最大数的最小值。</p>  <p>分析:m=num - num / x,为1到num中不包含x倍数的数的个数</p>  <p>      n=num - num / y,为1到num中不包含x倍数的数的个数</p>  <p>      num/(x*y)为既是x的倍数,又是y倍数的个数</p>  <p>所以:要满足m>=cnt1且n>=cnt2</p>  <p>因为两个序列不能有相同的数,所以cnt1 + cnt2   </p>
<p>然后二分查找num的最小值</p>  <p></p>  <pre name="code" class="sycode">#include<stdio.h>int main(){    __int64 x,y,cnt1,cnt2,m,n;    __int64 l,r,mid;    scanf("%I64d%I64d%I64d%I64d",&cnt1,&cnt2,&x,&y);    l=1;    r=1e12;    while(l<r mid="(l+r)/2;" m="mid-mid/x;" n="mid-mid/y;" if>=cnt1&&n>=cnt2&&mid-mid/(x*y)>=cnt1+cnt2)            r=mid;        else            l=mid+1;    }    printf("%I64d\n",r);    return 0;}</r></stdio.h>

 

C.Diverse Permutation

题意:求一个包含1-n的n个数的数列,要求相邻两元素差的绝对值的不同的个数为k

分析:n个数一共有n-1个差值,要保证k个差的绝对值不同,

则有n-k-1个差值相同,可以先按顺序输出 [1,n-k]间的n-k个数,

再依次输出剩下数中最小值,最大值,直到输完n个数为止.

#include<stdio.h>int main(){    int n,k,i,j,num;    scanf("%d%d",&n,&k);    num=n-k-1;    for(i=1;i  <br>  <br>  <p></p>  <p> </p> </stdio.h>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn