Description
可可今年的收入很好,他想将它存入
银行。现在银行的利息是R%。可可共有收入M元,他希望将钱在银行里存放Y年。请你帮他计算Y年后可以取到多少钱。答案最终取整(不需要四舍五入)输出,保证答案不大于2^32。
Input
输入只有一行,包含三个整数,分别是R(0<=R<=20)、M(100<=M<=106)和Y(0<=Y<=400),每两个整数之间用一个空格隔开。
Output
输出只有一行,为一个整数,表示可可Y年后从银行取到的钱数。
Sample Input
5 5000 4
Sample Output
6077
Hint
【样例1说明】
5000*1.05*1.05*1.05*1.05 = 6077.53125,取整后是6077
【样例输入2】
10 22222 100
【样例输出2】
306232767
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
long money;
double temp;
int i,R,M,Y;
printf("Input R M Y:\n");
scanf("伏瞎枯%d %d %d",&R,&M,&Y);
temp=M;
for (i=0;i<Y;i++)
temp*=1+0.01*R;
money=(long)(temp);
printf("%ld\n",money);
getch();
}
/神郑*TC编译通过,GCC也通缺洞过*/
算法哗誉都有了,编成程序就行乱敬段了
#define Y 20
double func(double M,int y,double R)
{
double T;
if(y<Y)
T = (1+R/100)*func(M,y,R);
else
return T*M;
}
自己优化稿锋下再
#include <stdio.h>
#include <math.h>
#define MAX 4294967296//2的32次方
void main()
{
int R,M,Y,flag=0;
while(flag==0)//判断输入数据是咐贺否合法
{
printf("Input R(0<=R<=20) M(100<=M<=106) Y(0<=Y<=400):\n");
scanf("%d %d %d",&R,&M,&Y);
if ((R>=0&&R<=20)&&(M>=100&&M<=106)&&(Y>=0&&Y<=400))
{
flag=1;
}
else
{
flag=0;
printf("R,M,Y中有非法数据!\n");
}
}
int i;
long LResult;
double DResult=M;
for(i=0;i<Y;i++)
DResult*=(1+0.01*R);/坦简银/计算浮让宴点型结果
if (DResult<MAX)//判断结果是否越界
{
LResult=(long)DResult;
printf("%d\n",LResult);
}
else
{
printf("数据越界!\n");
}
}