20170726测试

终于有水一点的题了:

Day1:

第1题 谜题
首先请解以下谜题:车下的数字是什么?

-----------------------图被吃掉了----------------------------------

正确的答案是87 。这道题对小龙大犇来说太轻松了,于是他想加强难度来考考你:对于给定的长度N,能否获得刚好长度为N的数列,使数列中的每个数经过翻转恰好是连续的数,如N==3时,数列 11 01 60 是合法的。数字的翻转符合以下规定:1、0、8翻转后是其本身;6和9翻转后互相转变;其他数字翻转后不合法;一位数将默认有前导零;只考虑一位或两位正整数。

【输入】puzzle.in
一行一个数字N(N<=99)
【输出】puzzle.out
如果能,输出“YES”;否则输出“XLSB”;
【样例输入】
3
【样例输出】
YES
【数据规模】
对于10%的数据,N<=1;
对于20%的数据,N<=3;
对于50%的数据,N<=4;
对于100%的数据1<=N<=99;

1手推或打代码爆搜发现最长为 8 9 10 11 所以<=4输出YES。

2爆搜直接过。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 int f[]={1,1,0,0,0,0,1,0,1,1};
 6 int main(){
 7     int n,flag=0; scanf("%d",&n);
 8     for (int i=0;i<=100-n;i++){
 9         bool flag_=1;
10         for  (int j=i;j<=i+n-1;j++){
11             int i2=j%10,i1=j/10;
12             if (f[i2]==0 || f[i1]==0) flag_=0;
13         }
14         if (flag_) {
15             flag=1;
16         }
17     }
18     if (flag) cout<<"YES";
19     else cout<<"XLSB";
20     return 0;
21 }

第2题 选修课
温州中学开放了许多选修课,每节选修课都属于一种种类。精力旺盛的黄小龙同学想要尽可能多的参加选修课,但是他只能选择M种种类的课程。当然,对于他所选的种类,他会去上所有该种类的课。现在他想知道他最多能上几节选修课,以及上最多选修课的方案数。
两种方案被认为不同当且仅当一种方案中存在另一种方案所没有的选修课。
【输入】course.in
第一行一个只由小写字母组成,长度为N的字符串。表示有N节选修课,以及每节选修课的种类。
第二行一个正整数M。
【输出】course.out
输出一行,两个用空格隔开的正整数,分别表示最多选修课数量和方案数。
【样例输入1】
abcde
1
【样例输出1】
1 5
【样例输入2】
ababac
2
【样例输出2】
5 1
【数据规模】
对于30%的数据,M==1;
对于另外30%的数据,每种种类的选修课最多只有一节;
对于100%的数据1<=M<=26、1<=N<=100000;

优先课程数最多的种类,可改变的是已选种类中课程数最少的那一类,A=课程数最少的种类选了几种,B=与该课程数相等的种类总共有多少,方案数为 。可以考虑高精度乘法与除法,避开的方法:考虑到最终答案最大为 并不会超longlong,但中间过程会。1、以素数乘积形式表示,在数组中加加减减,最后乘起来2、边乘边除。(标程用了第一种,但其中的高精度是没必要的)

事实证明这些都不需要。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 using namespace std;
 6 typedef long long ll;
 7 int b[26];
 8 char st[1000000];
 9 ll a[26],ans,nu,nu_;
10 bool cmp(int a_,int b_){
11     return a[a_]>a[b_];
12 }
13 int main(){
14     scanf("%s",st); int n=strlen(st),m;
15     cin>>m;
16     for(int i=0;i<n;i++) a[st[i]-‘a‘]++;
17     for(int i=0;i<26;i++) b[i]=i;
18     sort(b,b+26,cmp);
19     for(int i=0;i<m;i++)
20         ans+=a[b[i]];
21     printf("%lld ",ans);
22     for(int i=0;i<m;i++)
23         if(a[b[i]]==a[b[m-1]]) nu_++;
24     for(int i=0;i<26;i++)
25         if(a[b[i]]==a[b[m-1]]) nu++;
26     if(nu_+nu_>nu) nu_=nu-nu_;
27     ans=1;
28     for(ll i=nu;i>=nu-nu_+1;i--) ans*=i;
29     for(ll i=nu_;i>=2;i--) ans/=i;
30     printf("%lld\n",ans);
31     return 0;
32 }

第3题 质数
宿管有一套神奇的控制系统来控制寝室的灯的开关:

--------------------图又被吃了---------------------------
共有N盏灯,标号为1到N,有M个标有不同质数的开关,开关可以控制所有标号为其标号倍数的灯,按一次开关,所有其控制的灭着的灯都点亮,所有其控制的亮着的灯将熄灭。现在,宿管可以无限的按所有开关,所有灯初始状态为熄灭,请求出最多能点亮几盏灯。
【输入】
输入有多组数据,第一行一个正整数T表示数据组数。
每组数据第一行两个整数N,M。
第二行M个不同的质数表示开关上的标号,保证所有标号<=N。
【输出】
对于每组数据输出一行一个整数表示最多亮灯数。
【样例输入】
4
10 2
2 5
21 4
2 3 5 7
100 1
5
100 3
3 19 7
【样例输出】
5
11
20
42
【数据范围】
对于50%的数据,N<=15;
对于100%的数据,T<=10,N<=1000。

将质数根据根号N划分成两部分,大于根号N部分不会互相影响,小于根号N素数最多11个,穷举小于根号N的开关的开关情况,每种情况贪心判断大于根号N部分。

太巧妙了。

由于暴力会超时,我们不自然地就会想到搜索中的不必要或重复,而大于根号n的数是不会影响的,就解了。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<cstdlib>
 7 #include<vector>
 8 using namespace std;
 9 typedef long long ll;
10 typedef long double ld;
11 typedef pair<int,int> pr;
12 const double pi=acos(-1);
13 #define rep(i,a,n) for(int i=a;i<=n;i++)
14 #define per(i,n,a) for(int i=n;i>=a;i--)
15 #define Rep(i,u) for(int i=head[u];i;i=Next[i])
16 #define clr(a) memset(a,0,sizeof(a))
17 #define pb push_back
18 #define mp make_pair
19 #define fi first
20 #define sc second
21 #define pq priority_queue
22 #define pqb priority_queue <int, vector<int>, less<int> >
23 #define pqs priority_queue <int, vector<int>, greater<int> >
24 #define vec vector
25 ld eps=1e-9;
26 ll pp=1000000007;
27 ll mo(ll a,ll pp){if(a>=0 && a<pp)return a;a%=pp;if(a<0)a+=pp;return a;}
28 ll powmod(ll a,ll b,ll pp){ll ans=1;for(;b;b>>=1,a=mo(a*a,pp))if(b&1)ans=mo(ans*a,pp);return ans;}
29 void fre() { freopen("c://test//input.in", "r", stdin); freopen("c://test//output.out", "w", stdout); }
30 //void add(int x,int y,int z){ v[++e]=y; next[e]=head[x]; head[x]=e; cost[e]=z; }
31 int dx[5]={0,-1,1,0,0},dy[5]={0,0,0,-1,1};
32 ll read(){ ll ans=0; char last=‘ ‘,ch=getchar();
33 while(ch<‘0‘ || ch>‘9‘)last=ch,ch=getchar();
34 while(ch>=‘0‘ && ch<=‘9‘)ans=ans*10+ch-‘0‘,ch=getchar();
35 if(last==‘-‘)ans=-ans; return ans;
36 }
37 #define N 10005
38 int f[N],a[N],b[N],nua,nub,p[N],ansf[N],n,m,ans,num;
39 void dfs(int t){
40     if (t>nua) {
41         int num=0;
42         for (int j=1;j<=n;j++) f[j]=0;
43         for (int i=1;i<=nua;i++)
44         if (p[i]){
45             for (int j=a[i];j<=n;j+=a[i]) f[j]^=1;
46         }
47         for (int j=1;j<=n;j++) if (f[j]) num++;
48         for (int i=1;i<=nub;i++){
49             int num_=0;
50             for (int j=b[i];j<=n;j+=b[i])
51                 if (f[j]) num_--; else num_++;
52             if (num_>0){
53                 for (int j=b[i];j<=n;j+=b[i])
54                     f[j]^=1;
55                 num+=num_;
56             }
57         }
58         if (num>ans) ans=num;
59         return ;
60     }
61     p[t]=1;
62     dfs(t+1);
63     p[t]=0;
64     dfs(t+1);
65 }
66 int main(){
67     int T=read();
68     while (T--){
69         n=read(),m=read(); nua=0,nub=0; ans=0;
70         for (int i=1;i<=m;i++){
71             int x=read();
72             if (x<=sqrt(n)) a[++nua]=x;
73             else b[++nub]=x;
74         }
75         dfs(1);
76         printf("%d\n",ans);
77     }
78     return 0;
79 } 

时间: 2024-10-05 06:14:29

20170726测试的相关文章

iOS app打包 -- 生成ipa测试包 步骤详解

最近有小伙伴问我如何打成ipa包分发给测试人员 , 虽然现在网上的教程很多,但是也很杂, 没有一个比较完整的讲解. 利用工作之余, 就说一下如何生成ipa包?共分为两种方法. 第一种方法: 1) 至于配置发布证书和AdHoc描述文件, 就不再累述, 下载下来双击安装即可.(ps: 生成AdHoc描述文件的时候要注意勾选所有的设备, 只有被描述文件包含的设备才能进行相应的测试. 如果是企业账号的话则不需要添加设备的udid). 2) 接下来开始配置xCode里的工作(包括发布证书和描述文件), 注

Monkey测试

1             概述 Monkey测试是Android自动化测试的一种手段.Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常. 当Monkey程序在模拟器或真实设备运行的时候,程序会产生一定数量或一定时间内的随机模拟用户操作的事件, 如点击,按键,手势等, 以及一些系统级别的事件.通常也称随机测试或者稳定性测试. 2             测试步骤 2.1   测试前提条件 1.将手机恢复出厂设置 2.恢复出厂设置后,进入设置--

软件测试中的数据库测试

数据库中数据的基本结构 定义一:数据元素集合(也可称数据对象)中各元素的关系. 定义二:相互之间存在特定关系的数据元素集合. 一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多 字段(数据项)组成数据库测试分类系统测试.集成测试.单元测试.功能测试.性能测试.安全测试系统测试.数据库在初期设计中需要进行分析测试. 对于各种数据元素进行完美融合,并理清相互之间的关系便是数据库结构的基本定义. 在数据库中,不同数据之间会存在既定的特殊关系,其属于各种数据元素

一些基本LINUX命令以及测试环境的搭建

LINUX操作系统平时用的不多,资深测试与开发同学们用的比较多,像我这样的一个人,只喜欢WINDOWS操作系统.但LINUX操作系统也用过一段时间, 知道一些基本命令,如果不记得的话,就百度一下,拿来就用,也不会太难.下面记录一下自己知道的一些常用命令,方便自己查询,以供大家参考. 首先 LINUX系统的特点是:稳定,安全,开源,可裁剪性.(可裁剪性还真没有理解透) 其次:LINUX 有四个版本,分别是:DEBIAN,UBUNTU,RED HAT,CENTOS. 我只用过CENTOS版本,不过公

微信+WeTest:小程序云端测试系统上线

日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测试平台,由WeTest提供基础支持,下载"微信开发者工具"即可使用. 小程序测试报告示例:  一. 云真机测试 Beta 为了方便广大开发者检测小程序程序缺陷.评估小程序产品质量,微信提供了免费的云真机测试环境以及一整套测试方案.在小程序交付到真实用户手中使用之前,你可以将小程序分发到云真

微信公众号API测试——接口调用频率限制

接口频率限制[1] 公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 各接口调用频率限制如下: 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 自定义菜

手把手教你如何搭建自己的渗透测试环境

介绍 白帽子是指个体发起的黑客攻击,找到系统潜在的可能被恶意黑客利用的的漏洞或脆弱点.在目标不知情或者没得到授权的情况下发起黑客攻击是非法的.所以通常是建立一个自己的实验室,练习黑客技术. 在这个实验室里,你能看到如何创建一个自己的黑客环境,练习各种各样的黑客攻击技术.我们将会探讨不同类型的虚拟系统,构建一个虚拟网络,在虚拟环境中运行试用版的操作系统,搭建一个有漏洞的web应用程序,安装Kali LInux,执行渗透测试. 所需条件: VMware Workstation Windows XP系

游戏测试经历的流程及发版本注意的问题(或许有遗漏)

一.测试流程: 1.测试人员需要参与需求会议,了解需求,如有必要,提出疑问点,产品修改正 2.需求确定后,编辑测试用例或者测试功能点 3.开发提交完毕后,执行测试用例(要求开发出电脑版,节约前期打包,安装包的时间) 4.发现bug,提交bug到禅道,并通知相关人员 5.开发组修正bug,禅道指派给测试人员,表明已修复 6.对已修正的bug,进行回归测试 7.修正完毕的bug在禅道上置为关闭 8.待电脑版功能验证完毕后,进行手机包测试 9.整体测试完毕,可以发布包 补充: 1.中途有修改需求,也需

1.2软件生命周期&amp;测试流程

软件的生命周期 可行性分析-需求分析-软件设计-软件编码-软件测试-软件维护 1.可行性分析 主要确定软件开发的目的和可行性(PM) 2.需求分析 对软件的功能进行详细的分析(PM),输出需求规格说明书(原型图) 3.软件设计(DEV) 把需求分析得到的结果转换为软件结构和数据结构,形成系统架构 概要设计:搭建架构.模块功能.接口连接和数据传输 详细设计:模块深入分析,对各模块组合进行分析,伪代码   包含数据库设计说明 4.软件编码(DEV) 可运行的程序代码 5.软件测试 5.1.单元测试(