[2019.3.9腾讯技术笔试]

1.货币问题

在这里插入图片描述
题解:

package offer.tencent;
import java.util.Scanner;

public class money {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        long m=sc.nextLong();
        int sum=0;

        //最简方法
        System.out.println((m+n-1)/n);

        for(int i=n;i>0;i--){

            sum+=(int)(m/i);//需要的最大的货币数量
            m%=i;//还需支付多少货币

            i=(int)(m+1);//将i赋值为剩余价格的货币

            if(m==0){//货币足够跳出循环
                break;
            }
        }
        System.out.println(sum);
    }
}

2.奇妙的数列

在这里插入图片描述
题解:

package offer.tencent;
import java.util.Scanner;

public class sequence {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int q = sc.nextInt();
        for (int i = 0; i < q; i++) {
            long l = sc.nextLong();
            long r = sc.nextLong();

			System.out.println((int)(Math.pow(-1,r)*((r+1)/2)-Math.pow(-1,l-1)*(l/2)));
			//前r项和减去前l-1项和

            if (l % 2 == 0) {
                if ((r - l + 1) % 2 == 0) {//偶数开始,偶数个数
                    System.out.println(-(r - l + 1) / 2);
                } else {
                    System.out.println((l + r) / 2);
                }
            } else {
                if ((r - l + 1) % 2 == 0) {//奇数开始,偶数个数
                    System.out.println((r - l + 1) / 2);
                } else {
                    System.out.println(-(l + r) / 2);
                }
            }
        }
    }
}

4.气球问题

在这里插入图片描述
题解:

#include<bits/stdc++.h>
using namespace std;
unordered_map<int, int> mp;
int main() 
{
	int n, m;
	cin >> n >> m;	
	int satisfy = 0; 
	deque<int> q;
	int res = INT_MAX;
	for(int i = 1,x; i <= n; ++i)
	{
		cin >> x;
		q.push_back(x);
		if(!mp[x])satisfy ++;
		mp[x]++;
			
		if(satisfy == m)
		{
			if(q.size()) {
				
				while(mp[q.front()] > 1)
					mp[q.front()]--, q.pop_front();
				

				int u = q.size();
				res = min(res,u);
			}
		} 	
	} 
	if(res == INT_MAX) res = -1;
	cout << res << endl;
	
	return 0;
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值