zoukankan      html  css  js  c++  java
  • Codeforces Round #353 (Div. 2) A. Infinite Sequence

    题目链接:

    http://codeforces.com/contest/675/problem/A

    题意:

    给你一个等差数列,问你b是不是其中的一项。

    即是否存在大于等于0的整数k使得a+k*c==b。只要求(b-a)%c==0&&(b-a)/c>=0就可以了。

    但是,我就是写成了二分。。而且还写搓了。。

    先看看哇的代码:

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cstdio>
     5 using namespace std;
     6 
     7 const int maxn = 333;
     8 const int INF = 1e9;
     9 
    10 int main() {
    11     int a, b, c;
    12     while (scanf("%d%d%d", &a, &b, &c) == 3) {
    13         if (c == 0) {
    14             if (b == a) puts("YES");
    15             else puts("NO");
    16             continue;
    17         }
    18         int low, hig,flag;
    19         if (c < 0) {
    20             flag = 0;
    21             low=0, hig = (-INF - a) / c + 10;
    22             if (b > a) {
    23                 puts("NO"); continue;
    24             }
    25             while (low < hig-1) {
    26                 int mid = low + (hig - low) / 2;
    27                 if (a + mid*c>b) {
    28                     low = mid + 1;
    29                 }
    30                 else if (a + mid*c < b) {
    31                     hig = mid;
    32                 }
    33                 else {
    34                     flag = 1; break;
    35                 }
    36             }
    37             if (flag) puts("YES");
    38             else puts("NO");
    39         }
    40         else if (c>0) {
    41             flag = 0;
    42             low = 0, hig = (INF - a) / c + 10;
    43             if (b < a) {
    44                 puts("NO"); continue;
    45             }
    46             while (low < hig - 1) {
    47                 int mid = low + (hig - low) / 2;
    48                 if (a + mid*c<b) {
    49                     low = mid + 1;
    50                 }
    51                 else if (a + mid*c > b) {
    52                     hig = mid;
    53                 }
    54                 else {
    55                     flag = 1; break;
    56                 }
    57             }
    58             if (flag) puts("YES");
    59             else puts("NO");
    60         }
    61     }
    62     return 0;
    63 }

    以后写二分以此为鉴。。

    贴修改之后的:

     1 #include<algorithm>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cstdio>
     5 using namespace std;
     6 
     7 const int maxn = 333;
     8 typedef long long LL;
     9 const LL INF = 1e9;
    10 
    11 int main() {
    12     int a, b, c;
    13     while (scanf("%d%d%d", &a, &b, &c) == 3) {
    14         if (c == 0) {
    15             if (b == a) puts("YES");
    16             else puts("NO");
    17             continue;
    18         }
    19         LL low, hig;
    20         if (c < 0) {
    21             low = 0, hig = (-INF - a) / c + 10;
    22             if (b > a) {
    23                 puts("NO"); continue;
    24             }
    25             while (low < hig - 1) {
    26                 LL mid = low + (hig - low) / 2;
    27                 if (a + mid*c>=b) {
    28                     low = mid;
    29                 }
    30                 else if (a + mid*c < b) {
    31                     hig = mid;
    32                 }
    33             }
    34             if (a + low*c == b) puts("YES");
    35             else puts("NO");
    36         }
    37         else if (c>0) {
    38             low = 0, hig = (INF - a) / c + 10;
    39             if (b < a) {
    40                 puts("NO"); continue;
    41             }
    42             while (low < hig - 1) {
    43                 LL mid = low + (hig - low) / 2;
    44                 if (a + mid*c<=b) {
    45                     low = mid;
    46                 }
    47                 else if (a + mid*c > b) {
    48                     hig = mid;
    49                 }
    50             }
    51             if (a + low*c == b) puts("YES");
    52             else puts("NO");
    53         }
    54     }
    55     return 0;
    56 }
  • 相关阅读:
    Mysql备份恢复
    Mysql事务学习笔记
    MongoDB进阶
    MongoDB入门
    Mysql流程解析
    Mysql Explain学习笔记
    面试题
    聚集索引和非聚集索引
    端口号占用
    classpath: 和classpath*:的区别
  • 原文地址:https://www.cnblogs.com/fenice/p/5522083.html
Copyright © 2011-2022 走看看