NC200473. 电脑磨损程度
描述
输入描述
输入包含多组测试数据。每组输入一个正整数n(n<10000000),表示整个电脑使用时间。
当n=0时,输入结束。
输出描述
对于每组输入,输出最小花费。如果需要的话,保留一位小数。
示例1
输入:
3 9 16 0
输出:
10 20.4 36
C(clang 3.9) 解法, 执行用时: 4ms, 内存消耗: 376K, 提交时间: 2019-12-21 15:56:31
#include<stdio.h> int main() { int i=0,j=0,k=0; int n=0; double num=0; while(~scanf("%d",&n)) { if(n==0) break; else { if(n<=4) num=10; if(n>4&&n<=8) num=(n-4)*2+10; if(n>8&&n-(n/8*8)<=5) num=n/8*18+(n-(n/8*8))*2.4; if(n>8&&n-(n/8*8)>=6) num=n/8*18+10+(n-(n/8*8)-4)*2; if((int)num==num) printf("%.0lf\n",num); else printf("%.1lf\n",num); } num=0; } return 0; }
C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 356K, 提交时间: 2019-12-21 15:01:34
#pragma GCC optimize(2) #include<bits/stdc++.h> //#define int long long using namespace std; int n; double res; signed main(){ while(cin>>n,n){ if(n<=4){puts("10"); continue;} if(n<=8){printf("%d\n",10+2*(n-4)); continue;} int k=n/8,m=n%8; if(m>=5) res=k*18+10+(m-4)*2,printf("%.0lf\n",res); else{ res=k*18+2.4*m; if(m) printf("%.1lf\n",res); else printf("%.0lf\n",res); } } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 2ms, 内存消耗: 484K, 提交时间: 2019-12-21 15:29:02
#include <stdio.h> int main() { int n; double cost; while(1) { scanf("%d",&n); cost=0; if(n==0)return 0; cost+=(n/8)*18; n%=8; if(n<=4&&cost==0)cost=10; else if(n<=4)cost+=2.4*n; else cost+=10+(n-4)*2; if((int)(cost*10)%10!=0)printf("%.1f\n",cost); else printf("%.0f\n",cost); } }