XidianOJ 1060 坑爹的杜神

题目描述

众所周知,杜神非常喜欢出大模拟,也非常喜欢设置一些细节坑人。例如,在某次大赛中,他出了一道这样的题

(以下省略3000字)

计算出答案a后,你应该将a除以1000,再保留到小数点后两位输出,四舍五入。

保证a是非负整数,而且不超过64位有符号整数的表示范围。

输入

多组数据,每组数据1行,包含整数a。

输出

每组数据输出一行,表示杜神要你输出的答案。

--正文

把数看作字符串来处理

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main(int argc,char** argv)
{
        char num[2000];

        int i,j;

        while (scanf("%s",num) != EOF) {

            int length = strlen(num);

            if (length <= 3){
                if (length <= 2){
                    if (length == 2)
                    {
                        if (num[1] >= ‘5‘){
                            if (num[0] == ‘9‘){
                                printf("0.10\n");
                            }
                            else {
                                printf("0.0%c\n",num[0]+1);
                            }
                        }
                        else {
                            printf("0.0%c\n",num[0]);
                        }
                    }
                    else {
                        if (num[0] >= ‘5‘){
                            printf("0.01\n");
                        }
                        else {
                            printf("0.00\n");
                        }
                    }
                }
                else {
                    if (num[length-1] >= ‘5‘){
                        int now = length-2;
                        while ( now >= 0 && num[now] == ‘9‘){
                            num[now] = ‘0‘;
                            now --;
                        }
                        if (now == -1) {
                            printf("1.%c%c\n",num[0],num[1]);

                        }
                        else {
                            num[now]++;
                            printf("0.%c%c\n",num[0],num[1]);
                        }
                    }
                    else {
                        printf("0.%c%c\n",num[0],num[1]);
                    }
                }
            }
            else {
                if (num[length-1] >= ‘5‘) {
                    int now = length-2;
                    while ( now >= 0 && num[now] == ‘9‘){
                        num[now] = ‘0‘;
                        now --;
                    }
                    if (now == -1) {
                        int i;
                        printf("1");
                        for (i=0;i<=length-2;i++){
                            printf("%c",num[i]);
                            if (i == length-4) {
                                printf(".");
                            }
                        }
                    }
                    else {
                        num[now] ++;
                        int i;
                        for (i=0;i<=length-2;i++){
                            printf("%c",num[i]);
                            if (i == length-4) {
                                printf(".");
                            }
                        }
                    }
                    printf("\n");
                }
                else {
                    int i;
                    for (i=0;i<=length-2;i++){
                        printf("%c",num[i]);
                        if (i == length-4) {
                            printf(".");
                        }
                    }
                    printf("\n");
                }
            }
        }

    return 0;
}
时间: 2024-10-08 10:27:47

XidianOJ 1060 坑爹的杜神的相关文章

坑爹的杜神

原题: 众所周知,杜神非常喜欢出大模拟,也非常喜欢设置一些细节坑人.例如,在某次大赛中,他出了一道这样的题 (以下省略3000字) 计算出答案a后,你应该将a除以1000,再保留到小数点后两位输出,四舍五入. 保证a是非负整数,而且不超过64位有符号整数的表示范围. 输入 多组数据,每组数据1行,包含整数a. 输出 每组数据输出一行,表示杜神要你输出的答案. 这种菜题,我还不是一刀切 1 while(scanf("%lld",&a)!=EOF){ 2 printf("

[转]phonegap 2.9 IOS Xcode 搭建环境

phonegap 2.9 IOS Xcode 搭建环境 一:下载phoneGap2.9和安装Xcode5(目前最新版) 选择2.9是因为3.0以上坑爹版本编译神马的要在有网络情况. 二: 下载phonegap后解压到你的指定文件夹中,解压后找到create文件,如图 1: 2: 双击打开后复制红框里的路径如图: 3: 在你的workspace里创建一个文件夹,脑子里记住路径名称 4: 打开终端 -------刚刚create里打开复制的路径---------            ---你创建的

GUTC 2019/9/22题目

T1 潘 较水吧,直接区间dp dp[i][j]显然表示区间答案,开头预处理出一个的和两个的 考虑转移 若当前的str[i]==str[j],必可以和原来的最后一段形成回文,然后一起删掉 若str[i]!=str[j],就枚举断点就ok了 #include<bits/stdc++.h> using namespace std; #define int long long int dp[1005][1005],n; string str; signed main() { for (int i=0

在DELPHI中更简单的存取JPEG文件到SQLSERVER数据库

机器学习是一项经验技能,经验越多越好.在项目建立的过程中,实践是掌握机器学习的最佳手段.在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的. 预测模型项目模板不能只通过阅读来掌握机器学习的技能,需要进行大量的练习.本文将介绍一个通用的机器学习的项目模板,创建这个模板总共有六个步骤.通过本文将学到: 端到端地预测(分类与回归)模型的项目结构. 如何将前面学到的内容引入到项目中. 如何通过这个项目模板来得到一个高准确度的模板. 淮准帽纸枷昭炕彝尉宰票泌扔分送腥秸

【BZOJ4916】神犇和蒟蒻 杜教筛

[BZOJ4916]神犇和蒟蒻 Description 很久很久以前,有一只神犇叫yzy; 很久很久之后,有一只蒟蒻叫lty; Input 请你读入一个整数N;1<=N<=1E9,A.B模1E9+7; Output 请你输出一个整数A=\sum_{i=1}^N{\mu (i^2)}; 请你输出一个整数B=\sum_{i=1}^N{\varphi (i^2)}; Sample Input 1 Sample Output 1 1 题解:哎?上面的那个东西好像一直是1?(废话),然后 设j=i/d,

【BZOJ4916】神犇和蒟蒻(杜教筛)

[BZOJ4916]神犇和蒟蒻(杜教筛) 题面 BZOJ 求 \[\sum_{i=1}^n\mu(i^2)\ \ 和\ \sum_{i=1}^n\phi(i^2)\] 其中\[n<=10^9\] 题解 第一问 搞笑的 不会做? 算了.. 还是说一下: 想想\(\mu(x)\)是怎么算的??? 既然是\(i^2\),每个因数的个数一定不会是\(1\) 所以除了\(\mu(1)\)外一定都是\(0\) 所以第一问的答案一定是\(1\) 第二问: 先看看要求的是什么 \(\phi(i^2)=i*\ph

[bzoj4916] 神犇和蒟蒻 [杜教筛]

题面: 传送门 一句话,就是让你求$\mu\left(i^2\right)$以及$\varphi\left(i^2\right)$的前缀和 思路: 第一问,瞪了一会儿恍然大悟:这不就是1吗...... 因为对于$\mu\left(i^2\right)$,$i^2=i\ast i$,那么$\mu\left(i^2\right)$在$i\neq1$的时候值都是0 所以第一问输出1就好了...... 接下来看第二问 这一问中解决$\varphi\left(i^2\right)$是关键,因为这东西是个积

bzoj 4916 神犇和蒟蒻 杜教筛

第一题结合莫比乌斯函数定义,值恒为1. 第二题,phi(i^2) = phi(i) * i,根据欧拉函数的定义式能推出来,每个质因子的指数都增加一倍,都提出来一份,就是原先的phi(i)*i.然后还是跟g(x)卷一下,杜教筛即可. 1 #include <cstdio> 2 #include <map> 3 #include <cmath> 4 using namespace std; 5 typedef long long ll; 6 const int MAXN =

XidianOJ 1146 万神的竞赛

--正文 学到了,原来背包还能这么写 由于最高价值(顶多是五万)很低而重量(10^8)太大,所以反过来找,f[i]为到达价值i所需的最小空间 则 f[i] = min(f[i],f[i-w[i]]+v[i]) #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int f[100000]; int n; int w