zoukankan      html  css  js  c++  java
  • 最简真分数

    最简真分数

    Problem Description

    统计分母在指定区间[a,b]的最简真分数(分子小于分母,且分子分母无公因数)共有多少个,并求这些最简真分数的和(保留5位小数)。

    Input

    每行2个整数,分别表示a和b

    Output

    每行2个整数,分别表示最简真分数的个数和最简真分数的和

    Sample Input

    3 20

    Sample Output

    126 63.00000

    解释:

    这个题目,没有给定数据的范围,推测可能数据量不大,一般我们学校这种没有给定数据范围的题目,就暗示数据不大。按照常规思路。从a到b,开始遍历,然后遍历1..i, 再看是不是最简真分数。

     1 /*
     2   
     3 */
     4 #include<bits/stdc++.h>
     5 
     6 using namespace std;
     7 const int N = 1000;
     8 
     9 double sum_nums[N];
    10 int sums[N]; 
    11 
    12 int main(){
    13     sum_nums[0] = sum_nums[1] = 0;
    14     for (int i = 2; i < N; i++){
    15         sum_nums[i] = sum_nums[i-1] + (double)1 / double(i);
    16         sums[i] = sums[i-1] + 1; 
    17         for (int x = 2; x < i; x++){
    18             int flag = 0;
    19             for (int t = 2; t <= x; t++){
    20                 if (i % t == 0 && x % t == 0){
    21                     flag = 1;
    22                     break; 
    23                 } 
    24             } 
    25             if (!flag) {
    26                 sum_nums[i] += ((double)x / double(i)); 
    27                 sums[i] ++; 
    28             }
    29         }
    30     }
    31     int a, b;
    32     while (~scanf("%d %d", &a, &b))
    33         printf("%d %.5lf
    ", sums[b]-sums[a-1], sum_nums[b] - sum_nums[a-1]); 
    34     return 0;
    35 }
    View Code

    这种数据数字的特征,与输入无关。例如 [1, 5] 的答案,不会因为你的输入时[1, 6]就会改变,一般采用打表记录的方式。

  • 相关阅读:
    Qt计算器开发(三):执行效果及项目总结
    [HNOI2019]校园旅行
    How to fix nuget Unrecognized license type MIT when pack
    How to fix nuget Unrecognized license type MIT when pack
    git 通过 SublimeMerge 处理冲突
    git 通过 SublimeMerge 处理冲突
    git 上传当前分支
    git 上传当前分支
    gif 格式
    gif 格式
  • 原文地址:https://www.cnblogs.com/gznb/p/11207022.html
Copyright © 2011-2022 走看看