Problem A: Chiruno

Description

五年前,Aerix 无意间飞到了幻想乡,然后遇到了传说中的⑨酱,心情非常激动,想和她合影留念,但是⑨酱比较傲娇,她只欣赏算数能力强的,也不随随便便和人合影的,于是她手握冰锥,问 Aerix 这样一个问题:“我现在写一个很长很长的数字,设它为 A, 你告诉我 ⑨ 的 A 次方是多少,当然我不想听你说一长串数字,你告诉我从右往左数第二位的数字是多少就行。” Aerix 一看这么简单的问题,怎么用他出手,然后就把问题丢给你了。

Input

第一行:T,表示这里有 T 组数据
接下来 T 行:每行一个 <=100000 位的数 A

Output

共 T 行:每行一个数,表示对这组数据的解。

Sample Input

4
0
1
2
999999999999999999999999

Sample Output

0
0
8
8
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<stack>
#include<string.h>
#include<math.h>
using namespace std;
#define N 110108
#define ll long long
char str[N];
int ans[]={,,,,,,,,,};
int main()
{
int T,j,len;
scanf("%d",&T);
while(T--) //从右往左!!!
{
scanf("%s",str);
len=strlen(str);
// i-str[len-2]-'0';
j=str[len-]-'';
// s=i*10+j;
printf("%d\n",ans[j]);
} return ;
}
这题难就难在找规律,一是可以手推;二是可以用写程序进行找规律,如下:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
#define ll long long
#define mod 100
int main()
{
int i,n;
ll k=;
for(i=;i<= ;i++){
k=k*%mod;
printf("%d %02lld\n",i,k);
if(i%==)printf("\n");
} return ;
}

运行结果截图为:

Problem G: 狗哥的选择困难症

Description

狗哥是一个举棋不定又雷厉风行的人,有一天他遇到了一个巨大的困难,他走到了一个水果摊的前面,水果摊有n种芭娜娜,每种的芭娜娜都只卖剩下1个,老板看出了他的小心思,便说:“你可以随意挑选不超过n个的水果,但是不允许不拿。”狗哥眉头一皱,发现事情并不简单,于是掏出随身携带的天河二号计算机,计算起了有多少种的挑选方案。机智的你一定能比狗哥提前算出来的是吧。

Input

多组样例,第一行一个数字T,代表样例的个数(t<100)

每个样例有一个数字n(0=<n<=62),代表摊位上芭娜娜的种类

Output

对于每个样例输出一个m,代表方案数

Sample Input

1 2

Sample Output

 

主要应用一个组合数的公式即可:

题意要求是所有的选择方法,及偶数项加上奇数项之和构成2的m次方。由于Cm0项取不到(不允许取到0个),故减1.

【这篇博客详细讲解了一些常用的组合数公式,相关知识点可以记到本子上。 http://m.blog.csdn.net/litble/article/details/75913032】

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
#define ll long long int main()
{
int T;
double i,n;
scanf("%d",&T);
while(T--){
scanf("%lf",&n);
printf("%.0lf\n",pow(2.0,n)-1.0+1e-);
} return ;
}

而我一开始没想到这个公式,用DP推了出来:

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<stack>
#include<string.h>
#include<math.h>
using namespace std;
#define N 110108
#define ll long long ll dp[][],ans[]; // dp[n][m]表示n个物体中选择m个的组合数
int main()
{
int T;ll i,j;
scanf("%d",&T);
memset(dp,,sizeof(dp));
memset(ans,,sizeof(ans));
for(i=;i<=;i++)
{
for(j=;j<=i;j++)
{
if(j==)
dp[i][j]=i;
else
dp[i][j]=dp[i-][j-]+dp[i-][j];
ans[i]+=dp[i][j];
}
}
while(T--)
{
scanf("%lld",&j);
printf("%lld\n",ans[j]);
} return ;
}

了解DP的同学,可以画个表格自己手推一下!不会就跳过。

Problem H: 找hTh

Description

国庆期间,hTh同学在家好无聊,就玩起自己最喜欢的游戏“找你妹”,对于眼疾手快的他这个好简单了。but,突然hTh收到队长cYz发给他一串长长的字符串,问hTh,请问里面有多少个“你”?聪明的hTh一下子就知道了,不就是要找“hTh”的个数嘛,而且hTh知道,“hThTh”答案是肯定是2不是1,不过,这个字符串好长啊!!所以hTh懒得去算,他向你求助,你能帮帮他吗?

Input

第一行一个整数T,(0<T<=10)
接下来每一行是一个字符串(0<长度<=10000)

Output

输出答案个数。

Sample Input

2
hThTh
abcdhThTefghTh

Sample Output

2
2
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<stack>
#include<string.h>
#include<math.h>
using namespace std;
#define N 100008
char str[];
int main()
{
int i,T,j,cnt,len;
scanf("%d\n",&T);
while(T--)
{
cnt=;
gets(str);
len=strlen(str);
if(len<)
cnt=;
else
{
for(i=;i<=len-;i++)
{
if(str[i]=='h'&&str[i+]=='T'&&str[i+]=='h')
cnt++;
}
}
printf("%d\n",cnt);
} return ;
}

Problem J: 牛蛙的叫声

Description

你训练完踩单车回宿舍路上听到牛蛙的蛙鸣声,有些好听有些不好听,蛙鸣声可以用一个正整数表示,你发现当该整数的质因子种类仅有两种时,蛙鸣声是好听的。
现在给你一个整数表示牛蛙的叫声,问该牛蛙的叫声是否好听。

Input

输入包含多组样例,每个样例输入一个正整数n (1<=n<=1e6),表示牛蛙的叫声

Output

对于每一组样例,输出“YES”表示牛蛙的声音是好听的,否则输出“NO”

Sample Input

6
10
13
16
40

Sample Output

YES
YES
NO
NO
YES
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<stack>
#include<string.h> //质因子(或质因数)在数论里是指能整除给定正整数的 质数
#include<math.h>
using namespace std;
#define N 1000100
#define M 100000
#define ll long long
int prime[N],cnt,p[M]; //p[]表示质因子表,cnt表示质因子的总个数
void getprime(){ //生成1--N的素数判定表,prime[i]=0?1 ;
int i,j;
cnt=;
for(i=;i<=N-;i++)
prime[i]=;
prime[]=prime[]=;
prime[]=;
for(i=;i<=N;i++){
if(prime[i]==)
{
p[++cnt]=i;
for(j=i+i;j<N;j+=i)
prime[j]=;
}
}
}
int cntprime(int n){ //pcnt表示当前课找到的质因子数
int i,j,pcnt=;
for(i=;i<=cnt;i++)
{
if(p[i]>n)
break;
if(n%p[i]==)
pcnt++;
if(pcnt>) //存在两个以上的质因子
return ;
}
if(pcnt==) //存在两个质因子才是正解
return ;
return ;
}
void fact(int a[],int n){
for(int i=;i<=n;i++)
printf(" %d:%6d ",i,p[i]);
}
int main()
{
int n;
getprime();
// fact(p,10);
while(scanf("%d",&n)!=EOF)
{
if(prime[n]==||n==) // 质数直接判定
printf("NO\n");
else
{
if(cntprime(n)==)
printf("YES\n");
else
printf("NO\n");
}
} return ;
}

有人说其实这个题,可以加个奇数的判定条件——即直接忽略奇数!

应该不对,比如15的质因子就有两个:3和5,输入的是YES!

代码运行时间:52MS。比较省时!

Problem I: 一个撒狗粮的游戏

Description

今天讲的是一个撒狗粮的的游戏。
首先,给定四个数字分别是abcd, 其中0≤a, b, c, d≤9,现在我们拥有一个神技,可以消耗一个魔法值来修改这四个数字之中的任意一个(改完还是在0-9以内)。现在要使得a+b=c+d,那么最少要花费多少魔法值?(这个游戏怎么就是撒狗粮了?)

Input

第一行是样例个数T,代表T个样例
接下来T行,每行是4个整数abcd(没有空格隔开),每个整数都是0-9以内

Output

对于每一个样例都输出最小的花费魔法值

Sample Input

2
1188
1234

Sample Output

2
1

HINT

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
#define ll long long int main()
{
int i,j,k,m,n,T;
int a,b,c,d;
scanf("%d",&T);
while(T--)
{
scanf("%1d%1d%1d%1d",&a,&b,&c,&d);
if(a+b==c+d)
{
printf("0\n");
}
else if(a+b>c+d)
{
if(a>=c+d&&b<=c+d || b>=c+d&&a<=c+d)
printf("1\n");
else
printf("2\n");
}
else
{
if(c>=a+b&&d<=a+b || d>=a+b&&c<=a+b)
printf("1\n");
else
printf("2\n");
}
} return ;
}

没提交,目测没问题。。

———————————————————————————————我是分割线————————————————————————————————————————

题目怪难的,我花了一半比赛的时间也就勉强写了这几题。惭愧,惭愧。

没有多少耐心了,题解写的烂,程度好的同学可以看看,差一点的也不要灰心——多问问多交流,能补多少题补多少题。

虽然比赛难度大,但是也不应该气馁,应该迎难而上、多多努力,认识到自己的不足和与他人的差距,积累做题审题经验(很重要),打好心态,找到自己知识的漏洞,一点一点补起来。

以后的比赛的机会不会很多了,各位多多努力,积极参与。

Contest1063 - 2017广东工业大学第一次月赛-部分题解的更多相关文章

  1. 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...

  2. 2017广东工业大学程序设计竞赛初赛 题解&源码(A,水 B,数学 C,二分 D,枚举 E,dp F,思维题 G,字符串处理 H,枚举)

    Problem A: An easy problem Description Peter Manson owned a small house in an obscure street. It was ...

  3. 2017广东工业大学程序设计竞赛 E倒水(Water)

    题目链接:http://www.gdutcode.sinaapp.com/problem.php?cid=1057&pid=4 题解: 方法一:对n取2的对数: 取对数的公式:s = log( ...

  4. 2017广东工业大学程序设计竞赛决赛-tmk买礼物

    tmk买礼物 Description 今天是校赛的日子,为了庆祝这么喜庆的日子,TMK打算买些礼物给女票LSH庆祝一下. TMK进入了雪梨超市,然后刚踏入的一瞬间,店主就对TMK说:“恭喜你成为了本店 ...

  5. 2017广东工业大学程序设竞赛B题占点游戏

    Description 众所周知的是,TMK特别容易迟到,终于在TMK某次又迟到了之后,Maple怒了,Maple大喊一声:"我要跟你决一死战!"然后Maple就跟TMK玩起了一个 ...

  6. 2017广东工业大学程序设竞赛C题爬楼梯

    Description 小时候,我只能一阶一阶得爬楼梯, 后来,我除了能一次爬一阶,还可以一次爬两阶, 到现在,我最多一次可以爬三阶. 那么现在问题来了,我想爬上n层楼,相邻楼层之间有一段楼梯,虽然我 ...

  7. 2017广东工业大学程序设竞赛E题(倒水)

    Description 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水量相同的瓶子,把一个 ...

  8. 2017广东工业大学程序设计竞赛决赛 Problem E: 倒水(Water) (详解)

    倒水(Water) Description 一天,CC买了N个容量可以认为是无限大的瓶子,开始时每个瓶子里有1升水.接着~~CC发现瓶子实在太多了,于是他决定保留不超过K个瓶子.每次他选择两个当前含水 ...

  9. 2017广东工业大学程序设计竞赛决赛--Problem B: 占点游戏

    Description 众所周知的是,TMK特别容易迟到,终于在TMK某次又迟到了之后,Maple怒了,Maple大喊一声:"我要跟你决一死战!"然后Maple就跟TMK玩起了一个 ...

随机推荐

  1. [LeetCode] 656. Coin Path 硬币路径

    Given an array A (index starts at 1) consisting of N integers: A1, A2, ..., AN and an integer B. The ...

  2. dbcp与c3p0的区别

    众所周知,无论现在是B/S或者是C/S应用中,都免不了要和数据库打交道.在与数据库交 互过程中,往往需要大量的连接.对于一个大型应用来说,往往需要应对数以千万级的用户连接请求,如果高效相应用户请求,对 ...

  3. idea关闭sonarLint自动扫描

    手动运行SonarLint 停止SonarLint自动检测代码之后,可以使用Ctrl+Shift+S手动运行SonarLint检查代码

  4. web自动化测试笔记(二)

    如何使用selenium工具 上章节介绍了搭建web自动化的环境,这个章节介绍如何使用selenium写自动化脚本. 1.selenium selenium是一个用于web应用程序的测试工具.它可以帮 ...

  5. LeetCode 238. 除自身以外数组的乘积(Product of Array Except Self)

    238. 除自身以外数组的乘积 238. Product of Array Except Self 题目描述 LeetCode LeetCode238. Product of Array Except ...

  6. Linux基础系统优化(一)

    前言 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和ip等参数 ifu ...

  7. MySQL运维中的Tips--持续更新

    1.into outfile 生成sql:一般都是生成文本或者其他形式的文件,现在需要生成sql形式的文件.配置文件加secure_file_priv=''select concat('insert ...

  8. Scala 函数入门之过程、lazy值和异常

    Scala 过程  在Scala中,定义函数时,如果函数体直接包裹在了花括号里面,而没有使用=连接,则函数的返回值类型就是Unit.这样的函数就被称之为过程.过程通常用于不需要返回值的函数. 过程还有 ...

  9. quartz2.3.0(一)您的第一个Quartz程序

    任务类 package org.quartz.examples.example1; import java.util.Date; import org.slf4j.Logger; import org ...

  10. HTML5单页框架View.js介绍

    什么是单页应用单页应用,是指将用户视觉上的多个页面在技术上使用一个载体来实现的应用. 换句话来讲,用户视觉效果,与技术实现的载体,并不是一定要一一对应的.采取哪种技术方案,取决于产品设计.技术组成以及 ...