11 条题解

  • 6
    @ 2025-2-25 23:05:40

    根据题意模拟即可。

    由于题目限定死了月底津津一定会存钱,因此就很简单了。考虑用一个变量 sumsum 表示在妈妈那里存了多少钱,ansans 表示手上剩余多少钱。那么答案就是 sum×1.2+anssum×1.2+ans

    对于不行的情况,即为剩下的钱加上 300 仍然小于花销,那就不行了。 至于 sum 和 ans 的更新这里就不多赘述了,具体见代码。

    AC code(求点赞)

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        int ans=0;
        int sum=0;
        for(int i = 1;i<=12;i++){
            int s;cin>>s;
            if(ans+300<s){
                cout<<'-'<<i;
               return 0;
            }
            sum+=(300-s+ans)/100*100;
            ans=(300-s+ans)%100;
        }
        cout<<sum*1.2+ans;
        return 0;
    }
    
    • 1
      @ 2025-9-16 9:50:39

      C语言解法

      #include <stdio.h>
      int main()
      {
        int a;
        double sum=0;
        double rest=0;
        int i=1;
        for(i=1;i<=12;i++){
          scanf("%d",&a);
          int b=300+rest-a;
          if(b<0){
              printf("-%d",i);
              goto out;
          }else{
          int c=b-b%100;
          sum+=c;
          rest=300+rest-a-c;}
        }
          int money=sum*1.2+rest;
          printf("%d", money);
        out:
        return 0;
      }
      
      • 1
        @ 2025-7-16 9:40:36
        #include<bits/stdc++.h>
        using namespace std;
        int main(){
            int h[12],q[12]={300,300,300,300,300,300,300,300,300,300,300,300},l=0;
            for(int i=0;i<12;i++) cin>>h[i];
            for(int i=0;i<12;i++){
                 if(h[i]>q[i]) {
                     cout<<(i+1)*-1;
                     return 0;
                 }
                q[i]-=h[i];
                l+=q[i]/100*100;
                if(i!=11) q[i+1]+=q[i]%100;
            }
            q[11]-=q[11]/100*100;
            l+=l/5;
            q[11]+=l;
            cout<<q[11];
        }
        
        • 1
          @ 2025-3-31 13:15:55

          import java.util.Scanner;

          //用return比break合理,因为break只是跳出for,后面的代码还会执行 public class Main2 { public static void main(String[] args) { //每个月月初,妈妈给300元 // 每个月会花费输入的金额

              //定义起始金额为0,存款为0,支出为0
              int sum = 0;
              int savings = 0;
              int expenditure;
          
              Scanner sc = new Scanner(System.in);
              for (int i = 0; i < 12; i++) {
                  //每月零花钱
                  sum += 300;
          
                  //输入支出
                  expenditure = sc.nextInt();
          
                  //判断输入内容是否合理
                  if (expenditure < 0 || expenditure >= 350) {
                      break;
                  }
          
                  //支出后剩余的钱数
                  sum -= expenditure;
          
                  //如果剩余的钱数小于0,输出-1
                  if (sum < 0) {
                      System.out.println(-(i+1));
                      break;
                  }
          
          
                  //存完钱后剩余的钱数和存款
                      while (sum >=100 ) {
                          savings += 100;
                          sum -= 100;
                      }
          
              }
              int finalAmount = (int) (savings * 1.2 + sum);
              System.out.println(finalAmount);
          
          }
          

          }

          • 1
            @ 2025-1-17 14:25:46

            如下

            #include <iostream>
            using namespace std;
             
            const int m = 300;
             
            int main() {
                int h = 0, s = 0;       // 定义变量h和s,分别表示小时和总金额
                int a;                  // 定义变量a,用于存储输入的金额
                for (int i = 1; i < 13; i++) {
                    cin >> a;           // 输入金额
                    h += m;             // 每次循环累加300小时到h
                    if (h < a) {
                        cout << -i;     // 如果h小于a,则输出负的i,并结束程序
                        return 0;
                    }
                    int left = h - a;   // 计算剩余的金额
                    h = left % 100;     // 将剩余的金额转换为小时
                    s += left - h;      // 累加剩余的金额到s
                }
                cout << s * 1.2 + h;    // 输出总金额,使用1.2作为兑换率
                return 0;
            }
            • 1
              @ 2024-11-10 10:40:30
              #include <iostream>
              using namespace std;
              int main(){
              	int d,y,c=0,l=0;
              	for(int i=1;i<=12;i++){
              	    cin>>d;
              	    y=l+300-d;
              	    c=c+y/100;
              	    l=y%100;
              	    if(y<0){
              	        cout<<-i;
              	        return 0;
              	    }	
              	}
              	cout<<c*100*1.2+l<<endl;
              	return 0;
              }
              
              • 1
                @ 2024-10-29 11:27:55
                #include<bits/stdc++.h>
                using namespace std;
                
                int main() {
                    int budget, money = 0, interest = 0;
                    for (int i = 1; i <= 12; i++) {
                        cin >> budget;
                        money += 300 - budget;
                        if (money < 0) {
                            cout << '-' << i;
                            return 0;
                        }
                        while (money >= 100) {
                            interest += 100;
                            money -= 100;
                        }
                    }
                    cout << money + interest * 1.2;
                    return 0;
                }
                
                • 0
                  @ 2025-11-26 16:55:32
                  #include<stdio.h>
                  
                  int main()
                  {
                      int A[12];
                      int change=0;
                      int storage=0;
                      int final_change,month=0;
                      for (int i=0;i<12;i++){
                          scanf("%d",&A[i]);
                          if (change+300-A[i]>=0){
                              storage+=(change+300-A[i])/100;
                              change=(change+300-A[i])%100;
                          }    
                          else if (month==0)month=-i-1;
                      }
                      final_change=change+120*storage;
                      if (month!=0) printf("%d",month);
                      else printf("%d",final_change);
                      return 0;
                  }
                  
                  • 0
                    @ 2025-10-5 8:54:12

                    #include using namespace std; int main() { int a = 0, b = 0, t[13]; double sum = 0; t[0] = 0; for (int i = 1;i <= 12;i++) { cin >> a; t[i] = t[i - 1] + 300 - a; b = t[i] / 100; t[i] = t[i] % 100; sum += b; } for (int i = 1;i <= 12;i++) { if (t[i] < 0) { cout << -i << endl; return 0;//return 0;立即结束程序 }; } if (t[1] >= 0 && t[2] >= 0 && t[3] >= 0 && t[4] >= 0 && t[5] >= 0 && t[6] >= 0 && t[7] >= 0 && t[8] >= 0 && t[9] >= 0 && t[10] >= 0 && t[11] >= 0 && t[12] >= 0) { sum = sum * 100 * 1.2 + t[12]; cout << sum << endl; } return 0; }

                    • 0
                      @ 2025-10-4 19:09:31
                      #include<bits/stdc++.h>
                      using namespace std;
                      int b=0;                            //定义b接受输入
                      int s=0;                            //定义妈妈手中存的钱
                      int sm=0;                           //定义最小月份
                      int p=0;                            //定义余额
                      int main(){
                          for(int i=1;i<=12;i++){         //循环接受12次的预算
                              cin>>b;                   
                              p+=300;                     //计算拿到300元后的余额
                              if(p<b){                    //判断余额是否足够
                                  if(!sm){                //判断是否已经输出过余额,如果输出过则不为0
                                      sm=i;               //计算最小月份
                                      cout<<-1*sm;        //乘-1后输出
                                  }
                              }
                              else{
                                  s+=(p-b)-(p-b)%100;     //计算储蓄数额并加在s上
                                  p-=(p-b)-(p-b)%100+b;   //从余额中扣去储蓄数额
                              }
                              if(i==12&&!sm){             //判断是否已到年底,且中间没有出现过余额不足
                                  cout<<p+s*1.2;          //将余额加上返还的数额输出
                              }
                          } 
                          return 0;
                      }
                      
                      • 0
                        @ 2025-10-3 15:55:24

                        这个AC代码经过了我的多次思考,最后发现是文字游戏

                        #include <iostream>
                        using namespace std;
                        
                        int has_mony=0,
                            giv_mony_cnt=0;
                        
                        int main(){
                            for(int i=1;i<13;++i){
                                int now_this_ned,now_giv_mony;
                                // Now, I gets new 300 mony!!!
                                has_mony+=300;
                        
                                // But how many this month I need?
                                cin>>now_this_ned;
                        
                                // Check how much should I give to mom.
                                now_giv_mony=has_mony-=now_this_ned;
                        
                                // Yeah... My money is not enough this month.
                                if(now_giv_mony<0)
                                    return (cout<<'-'<<i,0);
                        
                                // Ohhhh my god!!! I has enough money!!!
                                // I need to give my mom some.
                                if(now_giv_mony/=100){
                                    now_giv_mony*=100;
                                    has_mony-=now_giv_mony;
                        
                                    // Counting time!
                                    giv_mony_cnt+=now_giv_mony;
                                }
                            }
                        
                            // Wait a minute...
                            // I gets 3 times wrong.
                            // Which bug did I lose?
                            // Emmm...
                            /*
                            return (cout<<giv_mony_cnt/5+has_mony,0);
                            */
                            // Oh, Plus the 20% of it!!!
                            // I thinks it's times 20%
                            return (cout<<giv_mony_cnt*1.2+has_mony,0);
                        }
                        
                        • 1

                        信息

                        ID
                        5147
                        时间
                        1000ms
                        内存
                        125MiB
                        难度
                        1
                        标签
                        递交数
                        1134
                        已通过
                        480
                        上传者