1 条题解

  • 0
    @ 2025-4-7 21:38:00

    C :

    #include <stdio.h>
    #include <string.h>
    #define MAX 300005
    	
    int d[MAX] ;
    
    int main ( void )
    {
    	int M , S , T , i ;
    
    	scanf ( "%d%d%d", &M , &S , &T ) ; 
    	
    	memset ( d , 0 , sizeof (int) ) ;
    	for ( i = 1 ; i <= T ;  i++ )
    	{
    		if ( M >= 10 )
    		{
    			d[i] = d[i-1] + 60 ;
    			M = M - 10 ;
    		}
    		else
    		{
    			d[i] = d[i-1] ;
    			M = M + 4 ;
    		}
    	}	
    	
    
    	
    	for ( i = 1 ; i <= T ; i++ )
    	{
    		if ( d[i] < d[i-1] + 17 )
    		{
    			d[i] = d[i-1] + 17 ;
    		}
    		if ( d[i] >= S )
    		{
    			printf ( "Yes\n" ) ;
    			printf ( "%d\n" , i ) ;
    			return 0 ;
    		}
    	}
    	printf ( "No\n" ) ;
    	printf ( "%d\n" , d[i-1] ) ;
    	
    	return  0 ;	
    }
    
    

    C++ :

    #include<iostream>
    using namespace std;
    int main()
    {
    	long long m,s,t;
    	cin>>m>>s>>t;
    	long long f[t+10];f[0]=0;
    	for(int i=1;i<=t;++i)
    	{
    		if(m>9)
    		{
    			f[i]=f[i-1]+60;
    			m=m-10;
    		}
    		else
    		{
    			f[i]=f[i-1];
    			m=m+4;
    		}
    	}
    	for(int i=1;i<=t;++i)
    	{
    		if(f[i]<f[i-1]+17) f[i]=f[i-1]+17;
    		if(f[i]>=s)
    		{
    			cout<<"Yes"<<endl;
    			cout<<i;
    			break;
    		}
    	}
    	if(f[t]<s)
    	{
    		cout<<"No"<<endl;
    		cout<<f[t];
    	}
    	return 0;
    	
    }
    

    Pascal :

    var
    k,i,l,j,m,s,t:longint;
    f:array[0..1000]of longint;
    procedure init;
    begin
    readln(m,s,t);
    end;
    begin
    init;
    j:=m;
    k:=0;
    l:=0;
    for i:=1 to t do
    begin
    if j>=10 then begin j:=j-10; l:=l+60; end else j:=j+4;
    if k+17>=l then k:=k+17 else k:=l;
    if k>=s then begin writeln('Yes'); writeln(i); halt;  end;
    end;
    writeln('No');
    writeln(k);
    end.
    
    • 1

    信息

    ID
    1775
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者