西南科技大学第十届ACM程序设计竞赛题解

时间:2021-08-29 13:28:02

A、德州扑克

B、

我恨11(1089)

问题描述

11是一个孤独的数字,小明十分讨厌这个数字,因此如果哪个数字中出现了11或者该数字是11的倍数,他同样讨厌这个数字。现在问题来了,在闭区间[L,R]之间有多少个小明讨厌的数字。

输入

多组测试数据,每组两个整数L,R(1<=L<=R<=100000)

输出

小明讨厌的数的个数。

样例输入

1 11

11 111

样例输出

签到题、直接暴力即可

#include <stdio.h>
int find(int x)
{
if(x%==)
return ;
while(x)
{
if(x%==)
return ;
x=x/;
}
return ;
}
int main()
{
int sum,l,r,i;
while(scanf("%d%d",&l,&r)!=EOF)
{
sum=;
for(i=l;i<=r;i++)
sum+=find(i);
printf("%d\r\n",sum);
}
return ;
}

C、

疯狂的小面包(1090)

问题描述

作为一名SWUST的学生,小明经常乘坐面包车往返于老区和新区,但是有时候排队乘车的人特别多,他就会选择走路。现在小明要从新区去老区,新区到老区的路程为D,小面包的速度为X,小明步行的速度为Y,排队等车的时间为T,以上物理量的单位均为国际单位,若乘坐小面包到达老区的时间小于步行的时间,小明就会选择乘坐小面包,否则他将步行去老区。

输入

多组测试数据,每组4个数据D,X,Y,T。(0<D,X,Y<=10000,0<=T<=10000)

输出

若小明选择乘坐小面包,输出"YES",否则输出"NO"。

样例输入

10 10 5 0
10 10 5 1

样例输出

YES
NO

签到题

#include<iostream>
using namespace std;
int main()
{
float d, x, y, t, t1, t2;
while (cin >> d >> x >> y >> t)
{
t1 = d / x + t;
t2 = d / y;
if (t1 < t2)
cout << "YES" << "\r\n";
else
cout << "NO" << "\r\n";
}
return ;
}

D、土豪我们做朋友吧

E、二分查找的最大次数

F、遍历数组的最小代价,后面再补,- -

G、中位数

H、挖金子

I、

小明的神器(1096)

问题描述

小明有一个神器,上面有 n个 孔,每个孔都可以喷水,每个孔只能喷一次水且只能持续一秒,小明不想让水喷出来,所以他就用手指去堵住孔(一根手指能且只能堵住一个孔),试问小明能否在任意时刻都不让水喷出来(小明一共有十根手指)。

输入

多组数据。

每组数据第一行为n(0<n<=10^4),代表神器上孔的个数,第二行n个数,代表每个孔喷水的时刻ti(0<=ti<=10^5)

输出

若小明在任意时刻都不会让水喷出,则输入“YES”,否则输出“NO”

样例输入

3
1 2 3
11
2 2 2 2 2 2 2 2 2 2 2

样例输出

YES
NO

签到题、

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 1000010 int n,a[N];
void solve()
{
sort(a,a+n);
int cnt=;
for(int i=;i<=n;i++){
if(a[i]!=a[i-] || i==n){
if(cnt>){
cout<<"NO"<<"\r\n";
return ;
}
cnt=;
}
else
cnt++;
}
cout<<"YES"<<"\r\n";
}
int main()
{
while(cin>>n)
{
for(int i=;i<n;i++)
cin>>a[i];
solve();
}
return ;
}

J、2014