武汉工程大学2020GPLT选拔赛(重现赛)详细代码讲解

题目----传送门

A L1-1 I LOVE WIT

思路:字符串多行打印操作

#include<bits/stdc++.h>

using namespace std;

int main(){
    
    printf("I\n" 
           "  \n"
           "  L\n"
           "   O\n"
           "    V\n"
           "     E\n"
           "       \n"
           "       W\n"
           "        I\n"
           "         T\n"
           );
}

B L1-2 单位换算

思路 : 水题

#include<bits/stdc++.h>

using namespace std;

int main(){
    
  double n;
  cin>>n;
  if((int)(n*12.0 * 2.54*10)*1.0 - (n*12.0 * 2.54*10) == 0 ) cout<<n*12.0 * 2.54*10<<endl;
  else 
   printf("%.1lf",n*12.0 * 2.54*10);
}

C L1-3 Pokémon

思路:水题

#include<bits/stdc++.h>

using namespace std;

int main(){
    double a[7];
    for(int i=0;i<=6;i++){
    	scanf("%lf",&a[i]);
    	getchar();
    	a[i] = a[i] /100.0;
	}
	//for(int i=0;i<=6;i++){
    //	printf("%lf ",a[i]);
//	}
	int c ;
	double v;
	cin>>c>>v;
	if(v==1) v=0.01;
    else v =0.99;
	printf("%.2lf", a[c] * v*100);
	cout<<"%";
}

D L1-4 颠倒阴阳

思路:就是一个进制转化的变形题,里面有一些小技巧。

#include<bits/stdc++.h>
#define m 32
using namespace std;

typedef long long ll;

int main(){
    ll n;
    cin>>n;
    
    int  a[32]={0};
    ll k = 32;
    
    int now;
    while(n){
		now = n  % 2;
		a[k] = !now;    //ASCll表的运用
		n /= 2;
		k--;
	}
	//for(int i=1;i<=m;i++) cout<<a[i];
    //cout<<endl;
	ll sum =0;
	for(int i=1;i<=m;i++){
		if(a[i] == 1){
			//cout<<i<<endl;
			sum += pow(2,i-1);
		} 
	}
	cout<<sum<<endl;
}

E L1-5 演唱会

思路 : 全部转换为s,比较好进行比较

#include <iostream>
 
using namespace std;
 
int main(){
    int hh, mm, ss;
    scanf("%d:%d:%d", &hh, &mm, &ss);
    int sum = ss + mm* 60 +hh * 60* 60;
    int sum1 = 19* 60* 60;
    int sum2 = 21* 60* 60;
    int sum3 = 33 + 22* 60 + 60*60;
    if(sum + sum3 < sum1) cout << "arrive on time";
    else if(sum + sum3 <sum2) cout << "arrive late";
    else cout << "too late";
    return 0;
}

F L1-6 分鸽子

思路:二分,很明显的一个二分的题目!

#include <bits/stdc++.h>
using namespace std;
#define IO std::ios::sync_with_stdio(false)
#define int long long
#define rep(i, l, r) for (int i = l; i <= r; i++)
#define per(i, l, r) for (int i = l; i >= r; i--)
#define mset(s, _) memset(s, _, sizeof(s))
#define pb push_back
#define pii pair <int, int>
#define mp(a, b) make_pair(a, b)
#define INF 0x3f3f3f3f
 
inline int read() {
  int x = 0, neg = 1; char op = getchar();
  while (!isdigit(op)) { if (op == '-') neg = -1; op = getchar(); }
  while (isdigit(op)) { x = 10 * x + op - '0'; op = getchar(); }
  return neg * x;
}
inline void print(int x) {
  if (x < 0) { putchar('-'); x = -x; }
  if (x >= 10) print(x / 10);
  putchar(x % 10 + '0');
}
 
const int maxn = 1e5 + 10;
int n,m,a[maxn];

bool check(int s){
  int cnt = 0;
  rep(i,1,n){
    cnt += a[i]/s;
  }
  return cnt >= m;
}
int main() {
  IO;
  cin >> n >> m;
  rep(i,1,n) cin >> a[i];
  int l = 1,r = 1e9+10,ans = 0;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (check(mid)) ans = mid, l = mid + 1;
    else r = mid - 1;
  }
  cout << ans << endl;
  return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值