1012 - 计算利息
时间限制 : 1 秒
内存限制 : 32 MB
为自行解决学费,小明勤工俭学收入10000元以1年定期存入银行,假设年利率为3.7%。利率按年计算,表示100元存1年的利息为3.7元。实际上有时提前有时推迟取,因此实际利息按天计算,1年按365天计算,因此Q天的利息是本金*3.7/100*Q/365。
在存了Q天后,1年定期利息会提高。例如存了100天后1年定期年利息提高到3.9%。如将存款提前全取出,再存1年定期。那么前面的100天只能按活期利息1.7%计算。
100天的利息和本金:10000(1+1.7/100100/365)=10046.6
再存1年定期:10046.6(1+3.9/100)=10438.4
得到的利息加本金为10438.4
如果无视利息的提高,再存1年。得到的利息加本金为(定期推迟取,利率不变)
10000(1+3.7/100*(100+365)/365)=10471.4
题目输入
输入数据有多组,第1行为整数T,是数据的组数。每组占一行5个数,Y表示存入的本金<=100000,Q表示已存天数<=365,e表示活期利率,f表示定期利率,g表示提高后的定期利率。
题目输出
每组数据输出2行。
第1行,提前支取后再存1年所得本金和利息。
第2行,继续存1年,Q+365天后所得本金和利息。
结果保留1位小数。
输入/输出样例
输入格式
4 10000 100 2.3 3.7 3.9 10000 100 1.7 3.7 3.9 10000 200 1.7 3.7 3.9 10000 300 1.7 3.7 3.9
输出格式
10455.5 10471.4 10438.4 10471.4 10486.8 10572.7 10535.2 10674.1
C语言解答
#include<stdio.h> int main() { int t; float y,q,e,f,g; scanf("%d",&t); while(t--) { scanf("%f%f%f%f%f",&y,&q,&e,&f,&g); printf("%.1f\n%.1f\n",y*(1+e/100*q/365)*(1+g/100),y*(1+f/100*(q+365)/365)); } return 0; }
C++解答
#include<stdio.h> int main() { int t; float y,q,e,f,g; scanf("%d",&t); while(t--) { scanf("%f%f%f%f%f",&y,&q,&e,&f,&g); printf("%.1f\n%.1f\n",y*(1+e/100*q/365)*(1+g/100),y*(1+f/100*(q+365)/365)); } return 0; }
Java解答
import java.util.*; public class Main{ //n天的本金和利息 public static float shortDay(float money,int days,float liferate,float highrate){ float cmoney = money*(1 + liferate/100 * (float)days/365); String nowMoney = String.format("%.2f", cmoney); float a = Float.parseFloat(nowMoney); float dmoney = a*(1 + highrate/100); String Money = String.format("%.1f", dmoney); return (Float.parseFloat(Money)); } public static float longDay(float money,int days,float rate){ float cmoney = money*(1 + rate/100 * (days+365)/365); String nowMoney = String.format("%.1f", cmoney); return(Float.parseFloat(nowMoney)); } public static void main(String[] args) { @SuppressWarnings("resource") Scanner sc = new Scanner(System.in); int flag = sc.nextInt(); float[] money = new float[flag]; int[] days = new int[flag]; float[] liferate = new float[flag]; float[] rate = new float[flag]; float[] highrate = new float[flag]; float[] first = new float[flag]; float[] last = new float[flag]; for(int i=0;i<flag;i++){ money[i] = sc.nextFloat(); days[i] = sc.nextInt(); liferate[i] = sc.nextFloat(); rate[i] = sc.nextFloat(); highrate[i] = sc.nextFloat(); first[i] = shortDay(money[i], days[i], liferate[i],highrate[i]); last[i] = longDay(money[i], days[i], rate[i]); } for(int i=0;i<flag;i++){ System.out.println(first[i]); System.out.println(last[i]); } //float m = shortDay(money[0], days[0], liferate[0]); //System.out.println(middleDay(m, rate[0])); } }
Python解答
import sys for line in sys.stdin: data = line.split() if len(data) != 1: Y,Q,e,f,g = line.split() Y,Q,e,f,g = float(Y),float(Q),float(e),float(f),float(g) print round((e*Q/36500+1)*Y*(1+g/100),1) print round(Y*(1+f/100*(1+Q/365)),1)