ループによる全探索
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int A, B, X, ans = (1<<30);
cin >> A >> B >> X;
for ( int a = 0; a <= 20; a++ ){
for ( int b = 0; b <= 40; b++ ){
if ( a*1000 + b*500 < X ) continue;
if ( a*A + b*B < ans ) ans = a*A + b*B;
}
}
cout << ans << endl;
}
場合分けによる解法
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int A, B, X, ans;
cin >> A >> B >> X;
if ( X % 500 != 0 ) X += 500 - X%500;
int a = 0;
int b = 0;
if ( A < B ) {
a = X/1000 + ((X%1000>0)?1:0);
} else if ( A > 2*B ){
b = X/500;
} else {
a = X/1000; X %= 1000;
b = X/500;
}
cout << A*a + B*b << endl;
}