首页 > 试题广场 >

膨胀的牛牛

[编程题]膨胀的牛牛
  • 热度指数:1993 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛以草料为食。牛牛有一天依次遇到n堆被施展了魔法的草料,牛牛只要遇到一堆跟他当前相同大小的草料,它就会把草料吃完,而使自己的大小膨胀一倍。一开始牛牛的大小的是A,然后给出牛牛依次遇到的n堆草料的大小。请计算牛牛最后的大小。

输入描述:
输入包括两行,第一行包含两个整数n和A(1 ≤ n ≤ 200, 1 ≤ A ≤ 1,000,000,000)
第二行包括n个整数,表示牛牛依次遇到的草料堆大小a_i(1 ≤ a_i ≤ 1,000,000,000)


输出描述:
输出一个整数,表示牛牛最后的大小。
示例1

输入

5 1
2 1 3 1 2

输出

4
import java.util.*;

public class Main{
    
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int A = scanner.nextInt();
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i=0;i<n;i++){
            set.add(scanner.nextInt());
        }
        while(set.contains(A)){
            A*=2;
        }
        System.out.println(A);
    }
}

发表于 2017-06-17 09:57:42 回复(0)
#include <iostream>
#include <vector>
using namespace std;
int main(){
    int n,a;
    cin >> n >>a;
    vector<int>t(n);
    for(int i = 0;i < n;i++){
        cin >> t[i];
    }
    for(int i = 0;i < n;i++){
        if(t[i] != a)
            continue;
        else{
            a += t[i];
        }
    }
    cout << a << endl;
    return 0;
}

发表于 2019-07-24 20:10:40 回复(1)
认真分析一下,当前A假设为1e9,而最大草堆也为1e9,相加之后为2*1e9不会爆int,之后再也没机会加了,所以直接做不就行了
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int inf = 0x3f3f3f3f;
const ll INF = (ll)inf*inf;
const int maxn = 55;
int main()
{
    int n,A;cin>>n>>A;
    int x;
    for(int i=0;i<n;i++){
        scanf("%d",&x);
        if(x==A)A+=x;
    }
    cout<<A<<endl;
 
    return 0;
} 

发表于 2018-03-19 23:37:33 回复(1)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String string = "";
        while ((string = bufferedReader.readLine()) != null) {
            String[] firstLine = string.split(" ");
            String[] secondLine = bufferedReader.readLine().split(" ");
            ArrayList<Long> arrayList = new ArrayList<>();
            for (int i = 0; i < secondLine.length; i++) {
                arrayList.add(Long.parseLong(secondLine[i]));
            }
            System.out.println(boomingNiu(arrayList, Long.parseLong(firstLine[1])));
         /*   System.out.println();
            Long a = 128l;
            Long b = 128l;
            System.out.println(a == b);*/
            /*因为Long中有一个静态的内部类LongCache,专门用于缓存-128至127之间的值,一共256个元素。
            如果仅仅是缓存下来而不去使用那么就没有任何意义。valueOf(long l)就是使缓存派上用场的方法,它会判断传入的参数是否在-128-127之间,
            如果是则直接从缓存中返回对应的引用,否则新创建一个Long的实例。
           128l==128l return false.
            所以,最好还是使用equals进行比较。也可以直接用.longValue()比较*/
        }
    }

    public static Long boomingNiu(ArrayList<Long> arrayList, Long initailA) {
        Long res = initailA;
        for (int i = 0; i < arrayList.size(); i++) {
            if (arrayList.get(i).equals(res)) {
                res = res * 2;
            }
        }
        return res;
    }

}
第一次知道Long在-127~128可以直接比较,大于了不能这么比。
发表于 2018-03-19 22:38:38 回复(0)
#include<stdio.h>
#include<map>
using namespace std;
int main(){
    int N,i;
    long long n,x;
    map<long long,int> book;
    for(scanf("%d%lld",&N,&n),i=0;i<N;i++)
        scanf("%lld",&x),book[x]=1;
    while(book.count(n)) n*=2;
    printf("%lld\n",n);
}

发表于 2017-11-10 21:44:20 回复(0)

#include<bits/stdc++.h>
using namespace std;
const int maxn = 205;
int main()
{
    int n;
    int A;
    int arr[maxn];
    scanf("%d%d",&n,&A);
    for(int i = 0; i < n; ++i){
        cin>>arr[i];
    }
    for(int i = 0; i < n;++i)
    {
        if(A == arr[i]){
            A = A*2;
        }
    }
    cout<<A<<endl;
    return0;
}
发表于 2019-08-02 11:24:03 回复(0)
#include<iostream>
#include<string>
using namespace std;
intfp(intn, inta,intb[])
{
    for(inti=0;i<n;i++)
    {
        if(a==b[i])
        {
                a+=a;
                i=0;
        }
        elseif(i==(n-1)&&a!=b[i])
        {
            returna;
        }
    }
    returna;
}
intmain()
{
    inta,n;
    cin>>n>>a;
    intb[200];
    for(inti=0;i<n;i++)
        cin>>b[i];
    intkk=fp(n,a,b);
    cout<<kk<<endl;
    system("pause");
    return0;
}
发表于 2017-08-30 13:00:53 回复(0)
import java.util.*;
public class quanguo43 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			int n=sc.nextInt();   //表示草料个数几个;
			int m=sc.nextInt();   //表示初始大小;
		    TreeSet <Integer> tree=new TreeSet<Integer>();
			for(int i=0;i<n;i++){
				tree.add(sc.nextInt());
			}
                  //tree.contains(m);也可以;
		   Iterator it=tree.iterator();
		   while(it.hasNext()){
			   if((int)(it.next())==m){
				   m*=2;
			   }
			}
			System.out.println(m);
		}
		sc.close();
	}

}


编辑于 2017-08-14 21:59:35 回复(1)
importjava.util.Scanner;
 
publicclassMain {
    publicstaticvoidmain(String[] args) {
        Scanner in = newScanner(System.in);
        intn=in.nextInt();
        intx=in.nextInt();
        inta[]=newint[n];
        for(inti=0;i<n;i++){
            a[i]=in.nextInt();
        }
         
        intsum=WedgeCount(a,x);
        System.out.println(sum);
    }
     
    publicstaticintWedgeCount(inta[],intx){
        intcount=x;
        for(inti=0;i<a.length;i++){
            if(a[i]==count) {
                count+=a[i];
            }
        }
        returncount;
    }
     
 
}

发表于 2017-08-06 20:57:52 回复(0)
#include<iostream>
using namespace std;
intmain(){
    int n, A;
    int h[200];
    while(cin>>n>>A)
    {
    int i;
    for(i = 0; i < n; ++i)
    cin>>h[i];
    for(i = 0; i < n; ++i)
        if(h[i]==A) A += A;  //A的大小不会超过2*10^9
    cout<< A <<endl;
    }
    return0;
}

编辑于 2017-08-01 11:40:59 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int A = scanner.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
        	arr[i] = scanner.nextInt();
        }
        for(int i = 0; i < n; i++) {
            if(arr[i] == A) {
                A *= 2;
            }
        }
        System.out.println(A);
    }
}

发表于 2017-07-30 17:31:58 回复(0)
var line=readline().split(' ').map((x)=>parseInt(x));
var data=readline().split(' ').map((x)=>parseInt(x));
var n=line[0],A=line[1];
while(data.indexOf(A)!=-1){
    A*=2;
}
print(A);

发表于 2017-07-23 16:39:46 回复(0)
#include<stdio.h>

int main()
    {
    int n,A,i=0;
    scanf("%d %d",&n,&A);
int a[200]={0};
  for(int j=0;j<n;j++)
    {
        scanf("%d",&a[j]);
        if(getchar()=='\n')
break;
    }
    int len=sizeof(a)/sizeof(a[0]);
    while(i<len)
        {
        if(A==a[i])
            A=A+a[i];
        i++;
        
    }
    printf("%d",A);
          
}

发表于 2017-07-11 20:00:41 回复(0)
<?php
    header("charset=utf-8");

    $s = trim(fgets(STDIN));   

    $d = explode(" ",$s);

    $n = $d[0];

    $A = $d[1];

    // var_dump($n);

    // var_dump($A);

    $i = 0;

    if($n=1&& 1<=$A && $A<=1000000000){

        $c = trim(fgets(STDIN));

        $f = explode(" ",$c);

        for($i=0; $i<$n; $i++){

            $arr[$i]=$f[$i];

        }

        for($i=0; $i<$n; $i++){

            if($arr[$i] == $A){

                $A=$A*2;

            }

        }

        echo $A;

        return$A;

    }else{

        $n = trim(fgets(STDIN));   

        $A = trim(fgets(STDIN));

    }

 ?>

添加笔记

编辑于 2017-06-22 16:56:54 回复(0)
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

int main() {
    using namespace std;
    int n;
    long long a;
    while (cin >> n >> a) {
        for (int i = 0; i < n; i++) {
            long long num;
            cin >> num;
            if (num == a) {
                a *= 2;
            }
        }
        cout << a << endl;
    }
    return 0;
}

发表于 2017-06-19 16:21:22 回复(0)
// 也太简单了
import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int A = in.nextInt();
		for(int i=0;i<n;i++){
			int now = in.nextInt();
			if(now==A)
				A = 2*A;
		}
		System.out.print(A);
	}
}

发表于 2017-06-17 14:53:05 回复(0)

热门推荐

通过挑战的用户