问题 A: Start up(1)!
时间限制: 1 Sec 内存限制: 64 MB提交: 710 解决: 479
[ 提交][ 状态][ 讨论版]
题目描述
很高兴你能参加一年一度的NEUQ ACM程序设计竞赛。
只要A了这道题就有机会拿奖哦!快来拼手速A了我!
输入
无
输出
一段字符串
样例输入
样例输出
I am a NEUQ ACMER.
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
printf("I am a NEUQ ACMER.\n");
return 0;
}
问题 B: Start up(2)!
时间限制: 1 Sec 内存限制: 2 MB提交: 1232 解决: 160
[ 提交][ 状态][ 讨论版]
题目描述
很高兴你能参加一年一度的NEUQ ACM程序设计竞赛。
只要A了这道题就有机会拿奖哦!快来拼手速A了我!
给出一个长度为n(n>1)的数组a,数组中的每个数都不相同,如果存在某个下标i满足
a[i]<a[i+1] i=0
a[i-1]>a[i]&&a[i]<a[i+1] 0<i<n-1
a[i]<a[i-1] i=n-1
则输出"YES",否则输出"NO".
输入
第一行一个整数N(1<N<=200000),表示数组有N个数.
第二行包含N个数,表示数组中每一项的值M.两个正整数之间会有一个空格,且0<=M<=2^31-1.
输出
如果满足上述条件输出"YES",否则输出"NO".
样例输入
6
6 1 2 3 5 4
样例输出
YES
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
int sign=0;
int a[3];
if(n==1)
{
scanf("%d",&a[0]);
printf("NO\n");
continue;
}
if(n==2)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
if(a[2]<a[1])
printf("YES\n");
else
printf("NO\n");
continue;
}
scanf("%d%d",&a[0],&a[1]);
for(int i=2;i<n;i++)
{
scanf("%d",&a[2]);
if(sign)
continue;
if(a[1]<a[2]&&a[1]<a[0])
{
sign=1;
}
if(i==n-1)
{
if(a[1]<a[2])
sign=1;
}
a[0]=a[1];
a[1]=a[2];
}
if(sign)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
问题 C: Digit Chains
时间限制: 10 Sec 内存限制: 64 MB提交: 524 解决: 59
[ 提交][ 状态][ 讨论版]
题目描述
很高兴你能参加一年一度的NEUQ ACM程序设计竞赛。
只要A了这道题就有机会拿奖哦!快来拼手速A了我!
将一个数字n的每一位平方后相加可以得到一个新的数字,如此重复便可得到数字n对应的数字链。
例如:
27-53-34-25-29-85-89
15-26-40-16-37-58-89
你会发现如果在运算过程中得到数字1或89那么数字链可以无限循环下去。现在给定一个范围,你需要算出有多少数字最终可以得到89.
注:数字89本身不算入结果
输入
范围n
n≤10000000
输出
可以得到89的数字个数
样例输入
5
样例输出
4
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[10];
int main()
{
int n;
while(~scanf("%d",&n))
{
int ans=0;
for(int i=2;i<=n;i++)
{
if(i==89)
continue;
int x=i;
while(1)
{
if(x==1)
break;
if(x==89)
{
ans++;
break;
}
int temp=0;
while(x)
{
int y=x%10;
temp=temp+y*y;
x=x/10;
}
x=temp;
}
}
printf("%d\n",ans);
}
return 0;
}
G题
问题 G: Trouble in Java
时间限制: 1 Sec 内存限制: 64 MB提交: 174 解决: 60
[ 提交][ 状态][ 讨论版]
题目描述
越越最近听说Java写代码很方便,便开始学习用Java来刷题。但是Java对大小写很敏感,经常因为手误而编译失败,而且越越还不会用自动完成来提高正确率。你能帮助她排除错误吗?
输入
单个测试样例:改正前的Java代码
输出
改正后的Java代码
注意:为方便起见,引号里的字符串也一并修改。
关键词转换列表:
system->System
scanner->Scanner
string->String
math->Math
tolowercase->toLowerCase
touppercase->toUpperCase
样例输入
public class Test
{
public static void main(string[] args)
{
system.out.println("Java Program");
}
}
样例输出
public class Test
{
public static void main(String[] args)
{
System.out.println("Java Program");
}
}
提示
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
string s;
while(getline(cin,s))
{
int n=s.size();
string s1;
int i=0;
for(;i<n;i++)
{
if(s[i]!=' '&&i!=n-1&&(s[i]>='a'&&s[i]<='z'))
s1.push_back(s[i]);
else
{
if((i==n-1)&&(s[i]>='a'&&s[i]<='z'))
s1.push_back(s[i]);
if(s1=="system")
{
printf("System");
}
else if(s1=="scanner")
{
printf("Scanner");
}
else if(s1=="string")
{
printf("String");
}
else if(s1=="math")
{
printf("Math");
}
else if(s1=="tolowercase")
{
printf("toLowerCase");
}
else if(s1=="touppercase")
{
printf("toUpperCase");
}
else
{
cout<<s1;
}
if((i==n-1)&&(s[i]>='a'&&s[i]<='z'))
;
else
printf("%c",s[i]);
s1.clear();
}
}
printf("\n");
}
return 0;
}
H题
问题 H: Fill The Bag
时间限制: 2 Sec 内存限制: 64 MB提交: 551 解决: 47
[ 提交][ 状态][ 讨论版]
题目描述
一次yyf和cq相约去北京比赛,但是想带的东西太多,于是他们决定从要带的东西当中选取一些使得背包尽可能的装满,现在你已经知道了背包的容量和每件物品的体积,你能预计出背包最小的剩余空间吗?
输入
第一行为背包的容量v,接下来的一行为物品的个数n,接下来的n行为每件物品的体积
v≤100000,n≤25
输出
背包最少剩余的空间
样例输入
41
6
8
4
6
2
9
10
样例输出
2
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[200000];
int main()
{
int n,v;
while(~scanf("%d",&v))
{
memset(a,0,sizeof(a));
a[0]=1;
int x;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&x);
for(int j=v;j>=x;j--)
{
if(a[j-x])
a[j]=1;
}
}
int ans;
for(int j=v;j>=0;j--)
{
if(a[j])
{
ans=v-j;
break;
}
}
printf("%d\n",ans);
}
return 0;
}
I题
问题 I: 反对称串
时间限制: 5 Sec 内存限制: 16 MB提交: 107 解决: 27
[ 提交][ 状态][ 讨论版]
题目描述
有一个字符串只有0和1组成,对于某个子串,如果将0和1互换并且倒过来与原子串相同,则认为该子串是"反对称"的.给出一个长度为N的字符串,那么有多少个子串是"反对称"的?
输入
第一行一个正整数N(0<=N<=10000).
第二行包括一个长度为N的01串.
输出
输出"反对称"子串的个数.
样例输入
8
11001011
样例输出
7
提示
这7个"反对称"子串分别是001011,0101,1100出现一次,01和10都出现两次,共7个.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[11000];
int main()
{
char c;
int n;
while(~scanf("%d",&n))
{
getchar();
for(int i=1;i<=n;i++)
{
scanf("%c",&c);
a[i]=c-'0';
}
int ans=0;
for(int i=1;i<n;i++)
{
if(a[i]==((a[i+1]+1)%2))
{
ans++;
int j,k;
for(j=i-1,k=i+2;j>=1&&k<=n;j--,k++)
{
if(a[j]==(a[k]+1)%2)
ans++;
else
break;
}
}
}
printf("%d\n",ans);
}
return 0;
}
J题
问题 J: Letters Only
时间限制: 1 Sec 内存限制: 64 MB提交: 590 解决: 91
[ 提交][ 状态][ 讨论版]
题目描述
Coffin是一个热爱读书的Geeker。一天他在网上下载了一本PDF的电子书,发现文字里夹杂了许多非英文字符和数字,Coffin一边说这都什么玩意儿,一边开始coding想去除电子书里的非英文字符和数字。
输入
一段字符串
输出
去除非英文字符、标点、数字,保留英文字符、空格、换行符。
样例输入
Th哇is is a sim嘛ple bo嘛ok
.A.C.M.大法好!
样例输出
This is a simple book
ACM
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
char s[110000];
int main()
{
while(gets(s))
{
int n = strlen(s);
for(int i=0;i<n;i++)
{
if((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z')||(s[i]==' '))
printf("%c",s[i]);
}
printf("\n");
}
return 0;
}