• 找整除--全国模拟(二)


    [编程题] 找整除
    时间限制:1秒
    空间限制:32768K
    牛牛想在[a, b]区间内找到一些数满足可以被一个整数c整除,现在你需要帮助牛牛统计区间内一共有多少个这样的数满足条件? 
    输入描述:
    首先输入两个整数a,b,(-5*10^8 ≤ a ≤ b ≤ 5*10^8) 接着是一个正整数c(1 <= c <= 1000)
     
     
    输出描述:
    输出一个整数表示个数。
     
    输入例子:
    0 14 5
     
    输出例子:
    3
     
    解题思路:本题采用正常的步骤算,会超时
     1 #include <iostream>
     2 using namespace std;
     3  
     4 int main()
     5 {
     6     int a;
     7     int b;
     8     int c;
     9     while(cin>>a>>b>>c)
    10     {
    11         int count = 0;
    12         for(int i=a;i<=b;i++)
    13         {
    14             if(i%c == 0)
    15                 count++;
    16         }
    17         cout<<count<<endl;
    18         return 0;
    19     }
    20 }


    正确解题思路:定义find函数求出[x,y]区间能够被c整除的个数
    如果a b同号,判断a、b的大小,然后调用find函数即可
    如果a、b异号,判断a、b哪个是负数,结果为find(1,正数)+find(负数,-1)+1(0)

     1 #include <iostream>
     2 using namespace std;
     3 //找到x y区间可以被c整除的个数
     4 int find(int x,int y,int c)
     5 {
     6     int sum = (y-x)/c;
     7     if(x%c==0||y%c==0) sum++;
     8     return sum;
     9 }
    10 int main()
    11 {
    12     int a;
    13     int b;
    14     int c;
    15     while(cin>>a>>b>>c)
    16     {
    17         int num = 0;
    18         if((a >> 31) == (b >> 31))//同号
    19         {
    20             if(a>b)
    21             {
    22                 num = find(b,a,c);
    23             }
    24             else
    25             {
    26                 num = find(a,b,c);
    27             }
    28         }
    29         else
    30         {
    31             if(a>b)
    32             {
    33                 num = find(1,a,c)+find(b,-1,c)+1;
    34             }
    35             else
    36             {
    37                 num = find(1,b,c)+find(a,-1,c)+1;
    38             }
    39         }
    40  
    41         cout<<num<<endl;
    42  
    43     }
    44 }
  • 相关阅读:
    WebService帮助类改良版,支持多webservice
    .NET-list扩展方法Distinct去重
    C#创建泛型类T的实例的三种方法
    划水网站
    DataGridView增加右键取消操作
    Sql Server 快捷键
    SQL Server中使用convert进行日期转换
    ToolStrip 选中某一项打勾
    H5实现手写功能
    git使用
  • 原文地址:https://www.cnblogs.com/qqky/p/6985027.html
Copyright © 2020-2023  润新知