• 2021寒假ACM集训队第一次训练-搜索(一)A : 小宋银行的贷款漏洞


    A : 小宋银行的贷款漏洞 2021-01-17 13:15:10

    【整体思路】

    <问题中的关键点在于,当贷款时间为+∞时,贷款的利率为多少。>

    贷款利率的计算方法为,利率w=a1/t;

    则,年利息=x*(1+w);

    1、对于贷款年限为t的情况,ans=x*(1+w)t = x*(1+a1/t)t;

    2、对于贷款年限为ZERO的情况,ans=x;

    3、对于贷款年限为+INF的情况,ans = x*(1+w)+∞ = x*(1+a1/t)+∞;

    <在高数中有一重要极限limx→+∞(1+1/x)= e;>

    所以此时ans = x*limt→+∞(1+a1/t)= x*limt→+∞(1+a1/t)(t/a1)*a1 = x*ea1

     1 #include<stdio.h>
     2 #include<math.h>//用到pow(a,b)函数,求a的b次方
     3 int  main(){
     4     int k = 1;//标识 第k组贷款
     5     double e[10];//当借款时间无限期时
     6     e[1] = 2.718281828459045;
     7     for (int i = 2; i <= 9; i++){
     8         e[i] = pow(e[1], i);
     9     }
    10     int T;//输入T组数据
    11     scanf("%d", &T);
    12     getchar();
    13     while (T--){
    14         long x;//借款金额
    15         char t[5];//借款年限
    16         scanf("%ld", &x);
    17         getchar();
    18         scanf("%s",&t);
    19         getchar();
    20         //当借款时间为正常年限的情况
    21          if (t[0]>='0' && t[0]<='9'){
    22             int j=0;//标识 t数组
    23             int temp=0;//借款年限
    24             double sum = x*1.0;//将整型转换为浮点型
    25             while(t[j] != ''){
    26                 temp = temp*10 + (t[j]-'0');
    27                 j++;
    28             }
    29             double a1;//a1为x从左往右数第1个数
    30             while (x>0){
    31                 a1 = x%10;
    32                 x = x/10;
    33             }
    34             for(int b=1; b<=temp; b++)
    35                 sum = sum*(1+(a1*1.0)/temp);
    36             long long loop=sum;//将浮点数转换为长整型
    37             printf("#Case %d : %lld
    ", k, loop);
    38         }
    39         //当借款年限为0时
    40         if (t[0]=='Z') printf("#Case %d : %lld
    ", k, x);
    41         //当借款年限为+∞时
    42         if (t[0]=='+'){
    43             double sum = x * 1.0;//将整型转换为浮点型
    44             int a1=0;//a1为x从左往右数第1个数
    45             while (x > 0){
    46                 a1 = x % 10;
    47                 x = x / 10;
    48             }
    49             long long loop = sum*e[a1];
    50             printf("#Case %d : %lld
    ", k,loop);
    51         }
    52         k++;
    53     }
    54     return 0;
    55 }
  • 相关阅读:
    【转】busybox分析——arp设置ARP缓存表中的mac地址
    【转】OpenWRT开发自定义应用方法
    10大白帽黑客专用的 Linux 操作系统
    原始套接字
    正则表达式
    如何解决虚拟机中的ubuntu系统方向键与退格键不能正常使用的问题
    数组 slice方法和splice方法的区别
    数组去重等数组实例
    JS实现表单全选以及取消全选实例
    JS实现表格隔行变色
  • 原文地址:https://www.cnblogs.com/jingjing002/p/ACM2021_1_6_A.html
Copyright © 2020-2023  润新知