http://codeforces.com/problemset/problem/740/A
思路
让n对4取模,re=n%4
re==0,直接输出
re==1,有可能差1本(a),有可能差1+4本( b+c ),有可能差1+4+4本(3c)
re==2,有可能差2本(b or 2*a),有可能差2+4本(2 *c)
re==3,有可能差3本(3*a or c or a+b)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ll n,a,b,c;
cin>>n>>a>>b>>c;
int re=n%4;
if(re==0)
printf("0\n");
else
{
int cnt=4-re;
int ans;
if(cnt==1){
ans=min(min(a,b+c),3*c);
}
else if(cnt==2){
ans=min(min(2*a,b),2*c);
}
else if(cnt==3){
ans=min(min(3*a,c),a+b);
}
printf("%d\n",ans);
}
}