zoukankan      html  css  js  c++  java
  • Gym

    Gym - 100199C

    题意:

    其实这么长的英文题面就是想告诉我们这个题是丢手绢。

    解法:

    找到与 $ N $ 互质的最大整数 $ K $ 即可。当 $ N $ 为奇数时, $ frac{N-1}{2} $ 即为所求数;当N为偶数时,如果 $ frac{N}{2} - 1 $ 是奇数,则为所求结果,如果为偶数,$ frac{N}{2} - 2 $ 为所求结果
    不过要注意数据范围很大,需要写高精度。

    CODE:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    
    #define LL long long
    #define N 2010
    
    using namespace std; 
    
    const int INF = 1e9; 
    char s[N]; 
    int a[N],T; 
    
    int main() {
        scanf("%s", s); 
        int len = strlen(s); 
        int p = 0; 
        for (int i = 0; i < len; i++) {
            a[i] = (p % 2) * 5 + (s[i] - '0')/2; 
            p = s[i] - '0'; 
        }
        if ((s[len-1] - '0') & 1) {
            if (a[0]) printf("%d", a[0]); 
            for (int i = 1; i < len; i++)
                printf("%d", a[i]); 
            puts(""); 
        } else {
            if (a[len-1] & 1) {
                if (a[len-1] >= 2) a[len-1] -= 2; 
                else {
                    int i;
                    a[len - 1] += 8; 
                    for (int i = len-2; i >= 0; i--) {
                        if (a[i] != 0) {
                            a[i] -= 1; 
                            break; 
                        }
                    }
                    for(int i = i + 1; i < len; i++)
                        a[i] = 9; 
                }
            }
            else {
                if (a[len-1] >= 1) a[len-1] -= 1; 
                else {
                    int i; 
                    a[len-1] += 9; 
                        for (i = len-2; i >= 0; i--) {
                        if (a[i] != 0) {
                            a[i] -= 1; 
                            break; 
                        }
                    }
                    for (i = i + 1; i < len; i++)
                       a[i] = 9; 
                }
            }
            int i; 
            for(i = 0 ; i < len && a[i] == 0 ; i++); 
            for(int j = i; j < len; j++) 
                printf("%d", a[j]); 
            puts(""); 
        }
        //system("pause");
        return 0;
    }
    
  • 相关阅读:
    MySQL SQL语言学习
    02-MySQL执行计划详解(EXPLAIN)
    linux下删除oracle11g单实例的方法
    01. Oracle 实例恢复
    替代变量与SQL*Plus环境设置
    9. Oracle 归档日志
    8. Oracle 联机重做日志文件(ONLINE LOG FILE)
    7. Oracle 控制文件(CONTROLFILE)
    6. Oracle 回滚(ROLLBACK)和撤销(UNDO)
    5. Oracle 表空间与数据文件
  • 原文地址:https://www.cnblogs.com/Repulser/p/11406291.html
Copyright © 2011-2022 走看看