zoukankan      html  css  js  c++  java
  • Codeforces 805A/B/C

    A. Fake NP

    传送门:http://codeforces.com/contest/805/problem/A

    本题是一个数学问题。

    给定两个正整数l,r(l≤r),对于区间[l..r]上的任一整数,写出其除1以外的所有因数,求区间[l..r]上出现频率最高的一个因数。

    结论:若l=r,则答案为l(或r),否则为2。参考程序如下:

    #include <stdio.h>
    
    int main(void)
    {
        int l, r;
        scanf("%d%d", &l, &r);
        printf("%d
    ", l == r? l: 2);
        return 0;
    }

    B. 3-palindrome

    传送门:http://codeforces.com/contest/805/problem/B

    本题是一个构造问题。

    一个长度为n的字符串,每一个字符是‘a’、‘b’、‘c’三个字符中的一个。这个字符串不存在长度为3的回文,且字符‘c’出现的频率尽可能低。生成一个满足上述条件的字符串。

    这个字符串可以是以下的形式:

    aabbaabbaabb...

    参考程序如下:

    #include <stdio.h>
    
    int main(void)
    {
        int n;
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
            putchar(i & 2? 'b': 'a');
        return 0;
    }

    C. Find Amir

    传送门:http://codeforces.com/contest/805/problem/C

    本题是一个数学问题。

    n个点,从点i到点j的代价是(i+j)mod(n+1)。求遍历这n个点的最小代价。

    这个问题看似是一个最短路(Shortest Path)问题。但实际上,这个问题也可以被看作是一个数学问题。

    i+j=n+1,则从点i到点j的代价为0。如以下的{i,j}组合:

    {1,n},{2,n-1},...,{i+1,n-i},...。

    因此,可以设置遍历顺序:1→n→2→n-1...→i→n+1-i→i+1→n-i→...。

    a.若n=2k(k=1,2,...),则遍历顺序:1→n→2→n-1...k-1k+1k

    b.若n=2k-1(k=1,2,...),则遍历顺序:1→n→2→n-1...k-2k+1k-1k

    以上情形的最小代价均为k-1。参考程序如下

    #include <stdio.h>
    
    int main(void)
    {
        int n;
        scanf("%d", &n);
        printf("%d
    ", (n - 1) / 2);
        return 0;
    }
  • 相关阅读:
    JavaSE第十五天20160823
    JavaSE第十四天20160822
    JavaSE第十三天20160819
    pojo和javabean的比较
    JavaSE第十二天20160818
    JavaSE第十一天20160817
    修正MyEclipse的SpellChecking
    JavaSE第十天20160816
    JavaSE第九天20160815
    Servlet中的init()方法如何才会在服务器启动时执行
  • 原文地址:https://www.cnblogs.com/siuginhung/p/7719745.html
Copyright © 2011-2022 走看看