南阳oj水题集合,语言的灵活运用
a+b
输入
输入两个数,a,b
输出
输出a+b的值
样例输入
2 3
样例输出
5
c/c++
#include<iostream>
using namespace std;
int main() { int a,b;
cin>>a>>b;
cout<<(a+b);
}
java
import java.util.Scanner; public class Main{//ACM中,提交的时候记得不要带package,而且类名一定要写Main,带上package会超时
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
System.out.println(a+b);
} }
虽然这两道题很简单但是主要是用来熟悉语言的应用
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
ASCII码排序
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
2
qwe
asd
样例输出
e q w
a d s
c/c++
#include<iostream>
using namespace std;
int main() { int n ;
char a,b,c,temp;
cin>>n;
while(n--)
{
cin>>a>>b>>c;
if(a>b)
{
temp=a;
a=b;
b=temp;
}
if(a>c)
{
temp=a;a=c;c=temp;
}
if(b>c)
{
temp=b;b=c;c=temp;
} cout<<a<<" "<<b<<" "<<c<<endl;
} }
java
import java.util.Arrays;
import java.util.Scanner; public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for(int i=0;i<n;i++)
{
char[]ch = new char[3];
String str = scanner.next();
ch = str.toCharArray();将字符串转化成字母存放到数组里面
Arrays.sort(ch);//对ch数组进行sort排序,注意Arrays.sort()的用法
System.out.println(ch[0]+" "+ch[1]+" "+ch[2]); }
} }
Arrays.sort():数组的sort排序
toCharArray():将字符串转换成呢单字符然后存放到数组中
虽然用java在时间还是空间上超过了c
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Fibonacci数
时间限制: ms | 内存限制: KB
难度:
描述
无穷数列1,,,,,,,,,...称为Fibonacci数列,它可以递归地定义为
F(n)= ...........(n=1或n=)
F(n)=F(n-)+F(n-).....(n>)
现要你来求第n个斐波纳奇数。(第1个、第二个都为1)
输入
第一行是一个整数m(m<)表示共有m组测试数据
每次测试数据只有一行,且只有一个整形数n(n<)
输出
对每组输入n,输出第n个Fibonacci数
样例输入 样例输出
java
package day05; import java.util.Scanner; public class Main { public static void main(String[] args) {
int []a = new int[22];
a[0]=1;
a[1]=1;
a[2]=2;
for(int i=3;i<20;i++)
{
a[i] = a[i-1]+a[i-2]; }
// System.out.println(a);
// for(int i=0;i<22;i++)
// System.out.println(a[i]);
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for(int i=0;i<n;i++)
{
int j = scanner.nextInt();
System.out.println(a[j-1]); } } }
c/c++
#include<iostream>
using namespace std;
int main()
{
int a[];
int n;
int i;
a[]=;
a[]=;
a[]=;
for(i=;i<=;i++)
{
a[i] =a[i-]+a[i-];
// cout<<a[i]<<endl;
} cin>>n;
while (n--)
{
cin>>i;
cout<<a[i-]<<endl;
} }
注意有递推关系的数列,一定要有起始的数字定义,然后将整个数组根据规律全都赋值
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
素数求和问题
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。
输入
第一行给出整数M(0<M<10)代表多少组测试数据
每组测试数据第一行给你N,代表该组测试数据的数量。
接下来的N个数为要测试的数据,每个数小于1000
输出
每组测试数据结果占一行,输出给出的测试数据的所有素数和
样例输入
3
5
1 2 3 4 5
8
11 12 13 14 15 16 17 18
10
21 22 23 24 25 26 27 28 29 30
样例输出
10
41
52
c/c++
#include<iostream>
#include<math.h>
using namespace std; int main()
{
int t,n;
cin>>t;
while(t--)
{ int sum=;
cin>>n;
while(n--)
{
int a,i;
cin>>a; for( i=;i<=sqrt(a);i++)
{
if(a%i==)
break; if((a%i!=))
continue;
}
if(i>sqrt(a)&&(a!=))
sum+=a; }
cout<<sum<<endl; }
}
java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
int t = scanner.nextInt();
while(t-->0)
{
int n = scanner.nextInt();
int sum=0;
while(n-->0)
{ int i;
int a = scanner.nextInt();
for(i=2;i<=Math.sqrt(a);i++ )
{
if(a%i==0)
break;
if(a%i!=0)
continue; }
if((i>Math.sqrt(a))&&(a!=1))
sum +=a;
}
System.out.println(sum); } } }
1不是素数
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
素数距离问题
时间限制: ms | 内存限制: KB
难度:
描述
现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。
如果输入的整数本身就是素数,则输出该素数本身,距离输出0
输入
第一行给出测试数据组数N(<N<=)
接下来的N行每行有一个整数M(<M<),
输出
每行输出两个整数 A B.
其中A表示离相应测试数据最近的素数,B表示其间的距离。
样例输入 样例输出
c/c++
#include<iostream>
#include<math.h>
using namespace std;
int sushu(int x)
{ int i,flag;
for( i=;i<=sqrt(x);i++)
{
if(x%i==)
{
flag=;
break;
} if(x%i!=)
{
continue;
} }
if(i>sqrt(x))
{
flag=;
}
return flag;
} int main()
{
int n;
cin>>n;
while(n--)
{
int m,left,right,l,r;
cin>>m;
if(m==)
{
cout<<<<" "<<<<endl;
}
else if(sushu(m)!=)
{
cout<<m<<" "<<<<endl;
} else
{
for(l=m;l>;l--)
{
if(sushu(l)!=)
{
left = m-l;
break;
}
else
continue;
}
for(r=m; ;r++)
{
if(sushu(r)!=)
{
right = r-m;
break;
}
else
continue;
}
if(right<left)
cout<<r<<" "<<right<<endl;
else
cout<<l<<" "<<left<<endl;
} } }
关键注意1的问题
java
import java.util.Scanner; public class Main {
public static int sushu(int x)
{
int i,flag = 0;
for(i=2;i<=Math.sqrt(x);i++)
{
if(x%i==0)
{
flag=0;
break;
}
if(x%i!=0)
{ continue;
} }
if(i>Math.sqrt(x))
flag=1;
return flag;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
while(n-->0)
{ int l,left = 0,r,right=0;
int m = scanner.nextInt();
if(m==1)
System.out.println("2"+" "+"1");
else if(sushu(m)==1)
{
System.out.println(m+" "+0); }
else
{
for(l=m;l>1;l--)
{
if(sushu(l)==1)
{
left = m-l;
break;
}
else
continue; }
for(r=m; ; r++)
{
if(sushu(r)==1)
{
right = r-m;
break;
}
else
continue;
} if(right<left)
{
System.out.println(r+" "+right);
}
else
{
System.out.println(l+" "+left); }
} } } }
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
A Famous Music Composer
- 描述
-
Mr. B is a famous music composer. One of his most famous work was his set of preludes. These 24 pieces span the 24 musical keys (there are musically distinct 12 scale notes, and each may use major or minor tonality). The 12 distinct scale notes are:
A A#=Bb B C C#=Db D D#=Eb E F F#=Gb G G#=Ab Five of the notes have two alternate names, as is indicated above with equals sign. Thus, there are 17 possible names of scale notes, but only 12 musically distinct notes. When using one of these as the keynote for a musical key, we can further distinguish between major and minor tonalities. This gives 34 possible keys, of which 24 are musically distinct.In naming his preludes, Mr. B used all the keys except the following 10, which were named instead by their alternate names:Ab minor A# major A# minor C# major Db minor D# major D# minor Gb major Gb minor G# major Write a program that, given the name of a key, give an alternate name if it has one, or report the key name is unique.
- 输入
- Each test case is described by one line having the format "note tonality", where "note" is one of the 17 names for the scale notes given above, and "tonality" is either "major" or "minor" (quotes for clarify).
- 输出
- For each case output the required answer, following the format of the sample.
- 样例输入
-
Ab minor
D# major
G minor - 样例输出
-
Case 1: G# minor
Case 2: Eb major
Case 3: UNIQUE
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
int flag,core=;
char a[];
while(gets(a))
{ flag=;
core++;
if(a[]=='A'&&a[]=='#')
{
a[]='B';
a[]='b';
}
else if(a[]=='B'&&a[]=='b')
{
a[]='A';
a[]='#';
}
else if (a[]=='C'&&a[]=='#')
{
a[]='D';
a[]='b'; }
else if(a[]=='D'&&a[]=='b')
{
a[]='C';
a[]='#';
}
else if(a[]=='D'&&a[]=='#')
{
a[]='E';
a[]='b';
}
else if(a[]=='E'&&a[]=='b')
{
a[]='D';
a[]='#';
}
else if(a[]=='F'&&a[]=='#')
{
a[]='G';
a[]='b';
}
else if(a[]=='G'&&a[]=='b')
{
a[]='F';
a[]='#';
}
else if(a[]=='G'&&a[]=='#')
{
a[]='A';
a[]='b';
}
else if(a[]=='A'&&a[]=='b')
{
a[]='G';
a[]='#';
}
else {
flag=;
}
if(flag==)
{
cout<<"Case "<<core<<": "<<a<<endl; }
else{
cout<<"Case "<<core<<": "<<"UNIQUE"<<endl;} }
}
就是一个字符串的替换问题,gets()可以收入空格,用java的话也一样只不过这里用到
ch = str.toCharArray();将字符串转化成字母存放到数组里面,然后比较前两位就可以
还有一种取字符串的方法在这里并不是很实用,就是 ch = str.charAt(0);ch = str.charAt(1);
---------------------------------------------------------------------------------------------------
蛇形填数
- 描述
- 在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
- 输入
- 直接输入方陈的维数,即n的值。(n<=100)
- 输出
- 输出结果是蛇形方陈。
- 样例输入
-
3
- 样例输出
-
7 8 1
6 9 2
5 4 3#include<iostream>
#include<string>
#include<cstdio>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int a[][]; int n;
cin>>n;
int x=,y=n-;
memset(a,,sizeof(a));
a[][n-]=;
int val = ;
while(val<n*n)
{
while(x+<n&&a[x+][y]==) a[++x][y]=++val; while(y->=&&a[x][y-]==) a[x][--y]=++val; while(x->=&&a[x-][y]==) a[--x][y]=++val; while(y+<n&&a[x][y+]==) a[x][++y]=++val;
}
for(x=;x<n;x++)
{ for(y=;y<n;y++)
{
cout<<a[x][y];
}
cout<<endl;
} }这个蛇形填数非常容易错,多看看理解理解,为什么val<n*n那里有必要多想想,还有为什么++x或者++y也要注意
package day05; import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int [][]a = new int[101][101];
int x=0;
int y=n-1;
int val=1;
a[0][n-1]=1;
while(val<n*n)
{
while(x+1<n&&a[x+1][y]==0) a[++x][y]=++val;
while(y-1>=0&&a[x][y-1]==0) a[x][--y]=++val;
while(x-1>=0&&a[x-1][y]==0) a[--x][y]=++val;
while(y+1<n&&a[x][y+1]==0) a[x][++y]=++val; }
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
System.out.print(a[x][y]);
System.out.println();
} }
}
但是如果要变成while((x+<n)&&a[++x][y]==) a[++x][y]=++num;
while((y->=)&&a[x][--y]==) a[x][--y]=++num;
while((x->=)&&a[--x][y]==)a[--x][y]=++num;
while((y+<n)&&a[x][++y]==) a[x][++y]=++num;结果就会不一样,why········关于++的使用以及+1的使用一定要注意
-------------------------------------------------------------------------------------------------------------------------------------------------------
韩信点兵
时间限制: ms | 内存限制: KB
难度:
描述
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<,b<,c<),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。
输入
输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<,b<,c<)。例如,输入:
输出
输出总人数的最小值(或报告无解,即输出No answer)。实例,输出:
样例输入 样例输出#include<iostream>
#include<cstring>
#include<cmath>
#include<math.h> #include<stdio.h>
using namespace std;
int main()
{
double a,b,c;
double i;
cin>>a>>b>>c;
for(i=;i<=;i++)
{
if(fmod(i,3.0)==a&&fmod(i,5.0)==b&&fmod(i,7.0)==c)
cout<<i;
if(i>)
cout<<"No answer"; } }math.h
数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1、 三角函数double sin(double);正弦double cos(double);余弦double tan(double);正切2 、反三角函数double asin (double); 结果介于[-PI/2,PI/2]double acos (double); 结果介于[0,PI]double atan (double); 反正切(主值),结果介于[-PI/2,PI/2]double atan2 (double,double); 反正切(整圆值),结果介于[-PI,PI]3 、双曲三角函数double sinh (double);double cosh (double);double tanh (double);4 、指数与对数double frexp(double value,int *exp);这是一个将value值拆分成小数部分f和(以2为底的)指数部分exp,并返回小数部分f,即f*2^exp。其中f取值在0.5~1.0范围或者0。double ldexp(double x,int exp);这个函数刚好跟上面那个frexp函数功能相反,它的返回值是x*2^expdouble modf(double value,double *iptr);拆分value值,返回它的小数部分,iptr指向整数部分。double log (double); 以e为底的对数double log10 (double);以10为底的对数double pow(double x,double y);计算x的y次幂float powf(float x,float y); 功能与pow一致,只是输入与输出皆为浮点数double exp (double);求取自然数e的幂double sqrt (double);开平方5 、取整double ceil (double); 取上整,返回不比x小的最小整数double floor (double); 取下整,返回不比x大的最大整数,即高斯函数[x]6 、绝对值int abs(int i); 求整型的绝对值double fabs (double);求实型的绝对值double cabs(struct complex znum);求复数的绝对值7 、标准化浮点数double frexp (double f,int *p); 标准化浮点数,f = x * 2^p,已知f求x,p (x介于[0.5,1])double ldexp (double x,int p); 与frexp相反,已知x,p求f8 、取整与取余double modf (double,double*); 将参数的整数部分通过指针回传,返回小数部分double fmod (double,double); 返回两参数相除的余数9 、其他double hypot(double x,double y);已知直角三角形两个直角边长度,求斜边长度double ldexp(double x,int exponent);计算x*(2的exponent次幂)double poly(double x,int degree,double coeffs []);计算多项式int matherr(struct exception *e);数学错误计算处理程序source: 《C & C++ Code Capsules》
南阳oj水题集合,语言的灵活运用的更多相关文章
- Codeforces水题集合[14/未完待续]
Codeforces Round #371 (Div. 2) A. Meeting of Old Friends |B. Filya and Homework A. Meeting of Old Fr ...
- 华为 oj 水题 数字颠倒
练手,献给初学者 #include <stdio.h> #include <string.h> int main(void) { char string[200]={'\0'} ...
- 【南阳OJ分类之语言入门】80题题目+AC代码汇总
小技巧:本文之前由csdn自动生成了一个目录,不必下拉一个一个去找,可通过目录标题直接定位. 本文转载自本人的csdn博客,复制过来的,排版就不弄了,欢迎转载. 声明: 题目部分皆为南阳OJ题目. 代 ...
- Leetcode OJ 刷题
Valid Palindrome吐槽一下Leetcode上各种不定义标准的输入输出(只是面试时起码能够问一下输入输出格式...),此篇文章不是详细的题解,是自己刷LeetCode的一个笔记吧,尽管没有 ...
- gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,
1195: 相信我这是水题 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 821 Solved: 219 Description GDUT中有个风云人 ...
- ACM水题
ACM小白...非常费劲儿的学习中,我觉得目前我能做出来的都可以划分在水题的范围中...不断做,不断总结,随时更新 POJ: 1004 Financial Management 求平均值 杭电OJ: ...
- sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)
n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you w ...
- sdut 2163:Identifiers(第二届山东省省赛原题,水题)
Identifiers Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Identifier is an important c ...
- Codeforces Round #367 (Div. 2)---水题 | dp | 01字典树
A.Beru-taxi 水题:有一个人站在(sx,sy)的位置,有n辆出租车,正向这个人匀速赶来,每个出租车的位置是(xi, yi) 速度是 Vi;求人最少需要等的时间: 单间循环即可: #inclu ...
随机推荐
- JQuery利用选择器定位动态id?
假如我们需要去定位一个动态生成的div,我们需要为它指定一个动态的id 例如: 前台使用EL进行迭代LIST生成div,为其添加动态的id,生成之后变成下面样式 <div id="tz ...
- 查询SQL2008字段和注释
SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = ...
- Angular入门(四) Router 替换当前页面
1.在 xx.html 中直接 写标签 <a [routerLink]="['/home']">home</a> 2.在 xx.html 中 ...
- 九度OJ 1014:排名 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8267 解决:2469 题目描述: 今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑每题的分 ...
- iOS 打包Framework包含其他Framework的问题
当你打包一个framework静态库包含另一个第三方静态库时,在工程中使用自己打包的framework,这时编译会出现报错,报错的大概原因是没有找到你打包framework里面的第三方framewor ...
- (1)Web 应用是一个状态机,视图与状态是一一对应的。 (2)所有的状态,保存在一个对象里面。
Redux 入门教程(一):基本用法 - 阮一峰的网络日志 http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_basic_u ...
- 【网络与系统安全】20179209 利用metasploit对windows系统的渗透
这次实验的主角是素有"内网杀手"之称的metasploit.还是少说一些夸赞它的话(因为即使功能再强大,不明白它的原理,不会灵活使用它集成的功能,一样没有用),我们直入主题.简单说 ...
- Django框架ORM常用参数汇总_模型层
primary_key 如果为True,那么这个字段就是模型的主键. 如果你没有指定任何一个字段的primary_key=True, Django就会自动添加一个IntegerField字段做为主键, ...
- freetype下载和配置
一 下载编译freetype库 1 下载 地址:http://www.freetype.org/ 得到压缩文件:freetype-2.5.3.tar.gz 2 解压: 直接解压,得到文件夹freety ...
- 一步步玩pcDuino3--mmc下的裸机流水灯
第一部分是玩pcduino3下的裸机.这个过程能够让我们更好的理解嵌入式系统,熟悉我们使用的这个平台. 首先介绍下开发环境: 虚拟机:VMware® Workstati ...