列表

详情


NC16662. [NOIP2004]津津的储蓄计划

描述

     津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

    为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

    例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。

    津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

    现在请你根据20041月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

输入描述

输入包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。

输出描述

输出包括一行,这一行只包含一个整数。
如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。

示例1

输入:

290
230
280
200
300
170
340
50 
90 
80 
200
60

输出:

-7

示例2

输入:

290 
230 
280 
200 
300 
170 
330 
50 
90 
80 
200 
60

输出:

1580

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 2ms, 内存消耗: 384K, 提交时间: 2022-10-03 15:28:30

#include <stdio.h>

int main()
{
	
	int g,a,b,c=0,m=0,h;
	for(a=1;a<=12;a++){
	scanf("%d",&g);
	h=300-g+c;
	if(h<0){
		printf("-%d",a);
		return 0;
	}
	b=h/100;
	c=h%100;
	m=m+b;
	
	}
	m*=120;m+=c;
	printf("%d",m);
	
}

C++ 解法, 执行用时: 5ms, 内存消耗: 480K, 提交时间: 2021-10-27 22:44:53

#include<iostream>
using namespace std;
int main()
{
	int x=0,n,m=0,c=0;
	for(int x=1;x<=12;x++)
    {
		cin>>n;
		m=m+300-n;
		c=c+m/100;
		m=m%100;
		if(m<0)
		{
			cout<<-x;
			return 0;}
	}
	cout<<m+100*c*1.2; 
}

Pascal(fpc 3.0.2) 解法, 执行用时: 1ms, 内存消耗: 256K, 提交时间: 2019-08-30 08:20:09

var
a,m,k,z,i:longint;
begin
for i:=1 to 12 do
 begin
  read(a);
  m:=m+300;
  m:=m-a;
  if m<0 then break;
  k:=m div 100;
  z:=z+k;
  m:=m-k*100;
 end;
if m<0 then writeln(-i) else writeln(m+z*120);
end.

pypy3 解法, 执行用时: 72ms, 内存消耗: 21196K, 提交时间: 2022-09-30 18:41:12

ans=0
t=0
for T in range(12):
    ans+=300-int(input())
    if ans<0:
        print(-(T+1))
        exit()
    if ans>=100:
        t+=(ans//100)*100
        ans%=100
print(int(ans+t*1.2))
        

Python3 解法, 执行用时: 44ms, 内存消耗: 4576K, 提交时间: 2023-07-21 10:42:22

a,b=0,0
for i in range(12):
    b+=300-int(input())
    if(b<0):
        print(-i - 1)
        exit()
    a+= b//100
    b%=100
print(a*120+b)

上一题