P1422骨灰级解法

· · 个人记录

唯一不用if的解法!

看这里!!

O(1)的算法

不用if

AC代码

你值得拥有

基础理论:0*任何数都=0

知道这件事和加减法,足够了

#include<bits/stdc++.h>
using namespace std;
int n;
double a;//最好开double,float有几率让你AFO
//所以遇到浮点数(实数)最好用double(血与泪的教训换来的)
int main()
{
    cin>>n;
    a+=min(n,150)*0.4463;//150千瓦时以下的钱,加进去
    n-=min(150,n);//用min来规定减去的数,是为了下一步防爆
    a+=min(n,250)*0.4663;
    //如果不到151千瓦时,前面减法已经减掉了
    //而0*0.4663等于0.0000,所以加了等于没加
    //这里的250是400-150同步减掉的,
    n-=min(250,n);//防爆
    a+=n*0.5663;//剩下的*0.5663,不够的话原理同上
    printf("%.1f",a);//简单输出~
    return 0;        //完美AC
}