到底哪里出了问题啊。-

img


银行利息
描述:
农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,并对自己能得到多少收益感到好奇。已知投资的复合年利率为R(0到20之间的整数)。约翰现有总值为M的钱(100到1,000,000之间的整数)。他清楚地知道自己要投资Y年(范围0到400)。请帮助他计算最终他会有多少钱,并输出它的整数部分。数据保证输出结果在32位有符号整数范围内。

输入:
一行包含三个整数R,M,Y,相邻两个整数之间用单个空格隔开。
输出:
一个整数,即约翰最终拥有多少钱(整数部分)。
样例输入:
5 5000 4
复制
样例输出:
6077
复制
注释:
在样例中,
第一年后: 1.05 * 5000 = 5250
第二年后: 1.05 * 5250 = 5512.5
第三年后: 1.05 * 5512.50 = 5788.125
第四年后: 1.05 * 5788.125 = 6077.53125
6077.53125的整数部分为6077。

Source: USACO 2004 November

用这个代码也能算出答案 但是系统显示wrong answer 哪里错了

根据题目的要求,是不是因为M也需要是整数,然后把输入的R计算成利率需要除以100然后转换为double类型以便后面参与收益计算,然后每年增长的倍数是(1+利率), 1代表本金,利率即收益率,修改如下:


#include <stdio.h>

int main(void){
    
    int R, Y ,M;    
    
    
    scanf("%d %d %d",&R,&M,&Y);
    
    double rate = (double)R/100; //根据题目提示,把输入的R计算为基础复合年利率 
    
    double result=M;  //把收益初始化为本金 
    
//    printf("rate = %lf\n",rate);
    
    for(int i=Y;i>0;i--){
        result*=(1+rate); //投资收益等于本金乘以收益率 
        //printf("result=%lf\n",result);
    }
    
    printf("%d",(int)result);
    
    return 0;
} 

img

你直接把利率写死成1.05了

都说了是三个整数啊,为啥M你擅自定义为double呢