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 }
  • 相关阅读:
    容器技术之Dockerfile(一)
    容器技术之Docker常用命令说明
    容器技术之Docker数据卷
    Cypress与TestCafe WebUI端到端测试框架简介
    API测试之Postman使用全指南(原来使用 Postman测试API如此简单)
    【PyMuPDF和pdf2image】Python将PDF转成图片
    2020 | 可替代Selenium的测试框架Top15
    AWS EC2+Docker+JMeter构建分布式负载测试基础架构
    Appium移动端自动化测试--元素操作与触摸动作
    Appium移动端自动化测试--使用IDE编辑并强化脚本
  • 原文地址:https://www.cnblogs.com/fenice/p/5522083.html
Copyright © 2011-2022 走看看