题目:
Description
A soldier wants to buy w bananas in the shop. He has to pay k dollars for the first banana, 2k dollars for the second one and so on (in other words, he has to pay i·k dollars for the i-th banana).
He has n dollars. How many dollars does he have to borrow from his friend soldier to buy w bananas?
Input
The first line contains three positive integers k, n, w (1 ≤ k, w ≤ 1000, 0 ≤ n ≤ 109), the cost of the first banana, initial number of dollars the soldier has and number of bananas he wants.
Output
Output one integer — the amount of dollars that the soldier must borrow from his friend. If he doesn't have to borrow money, output 0.
题目大意:第i个香蕉的价格是ik元,求总共的价钱
算法用等差数列的求和公式:(1+i)*i/2;
代码:
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int k,w,n,sum,b,price; 6 while(cin>>k>>n>>w) 7 { 8 if(k>=1&&w<=1000&&n>=0&&n<=1000000000) 9 { 10 sum=(1+w)*w/2; 11 price=sum*k; 12 if(price>n) 13 { 14 b=price-n; 15 printf("%d ",b); 16 } 17 else printf("0 "); 18 } 19 } 20 return 0; 21 }