1 条题解

  • 0
    @ 2025-10-10 15:46:00

    C :

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    #include<math.h>
    //x空瓶子 
    int f(int x){
    	if(x<2) return 0;
    	else return f(x/2+x%2)+x/2; 
    }
    int main(){
    	int n,m;
    	scanf("%d%d",&n,&m); 
    	printf("%d",f(m/n)+m/n);
    	return 0;
    }
    
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
     
    //x个瓶子换饮料 
    int fun(int x){
        if(x >= 2){
            return x / 2 + fun(x / 2 + x % 2);
        } else{
            return 0;
        }
    }
     
    int main(){
        int n,m;
        cin>>n>>m;
        //直接买到的数量+换的数量 
        cout<<m/n+fun(m/n)<<endl;
         
        return 0;
    }
    

    Pascal :

    var n,m,a,x:longint;
    begin
    read(n,m);
    a:=m div n;
    x:=a;
    while a>=2 do
    begin
    x:=x+(a div 2);
    if a mod 2=0 then a:=a div 2
    else a:=(a-1) div 2+1;
    end;
    write(x);
    end.
    

    Java :

    import java.util.Scanner;
    
    public class Main {
    	
          public static int Buycoke(int p) {
        	  if(p==1) {
        		  return 1;
        	  }else { 
        		  if(p%2==0) {
        			  return p+Buycoke(p/2);
        		  }else {
        			  return p+Buycoke(p/2)+1;
        		  } 
        	  }
          }
    	public static void main(String[] args) {
    	   Scanner sc=new Scanner(System.in);
    	   int n=sc.nextInt();
    	   int m=sc.nextInt();
    	   int t=Buycoke(m/n);
    	   System.out.println(t);
    	}
    
    }
    
    • 1

    信息

    ID
    356
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者