主題の要件
アイデア
最初に3つの状況を分析しましょう
n | 価格 |
---|---|
n <= 4 | 10 |
4 <n <8 | 10 + 2 *(n-4) |
n> = 8 | 18 + 2.4 *(n-8) |
その中で、n> = 8の場合、
- 8 <n <= 12
方法1:価格= 18 + 2.4 *(n-8)//より適切な
方法2:価格= 18 + 10 - 12 <n <= 16
方法1:価格= 18 + 4 * 2.4 + 2.4 *(n-12)
方法2:価格= 18 + 10 + 2(n-12)//より適切
類推により、n> = 8の場合、最初に8の部分を計算し、残りの部分が8未満になるまでn-8を続けます。
- 残りの部分が4より大きい場合は、12 <n <= 16と同様の方法を選択し、10 + 2(n-12)のアルゴリズムを使用します。
- それ以外の場合は、8 <n <= 12、直接2.4 * nと同様の方法を使用します
コード
#include <stdio.h>
int main(){
float n=0;
while(scanf("%f",&n)&&n!=0){
int in=(int)n;
double rent=0;
if(n-in!=0)
in=in+1;
if(n<=4)
rent=10;
else if(n>4&&n<=8)
rent=10+(n-4)*2;
else{
while(n>=8){
rent+=18;
n-=8;
}
if(n<=4)
rent+=2.4*n;
else
rent+=10+(n-4)*2;
}
//注意输出格式
if(rent-(int)rent==0) printf("%d\n",(int)rent);
else printf("%.1lf\n",rent);
}
return 0;
}