Problem Description
喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!
什么问题?他研究的问题是蟠桃一共有多少个!
不过,到最后,他还是没能解决这个难题,呵呵-
当时的情况是这样的:
第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?
Input
输入数据有多组,每组占一行,包含一个正整数n(1<n<30),表示只剩下一个桃子的时候是在第n天发生的。
Output
对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。
Sample Input
2
4
Sample Output
4
22
Author
lcy
c++
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;//第几天发生只剩一个
while(cin>>n){
int t= 1;
int sum;
for(int i=1;i<n;i++){
sum=(t+1)*2;
t=sum;
}
cout<<sum<<endl;
}
}
java
package com.imooc;
import java.util.Scanner;
public class dog extends Animal {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int t =1;
int sum = 0 ;
int m = in.nextInt();
for(int i=1;i<m;i++) {
sum=(t+1)*2;
t=sum;
}
System.out.println(sum);
}
}
}
Problem Description
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97
4 100 99 98 97
Sample Output
98.00
98.50
Author
lcy
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m;
double a[101];
while(cin>>m){
for(int i=0;i<m;i++){
cin>>a[i];
}
sort(a,a+m);
double sum=0.00;
for(int j=1;j<m-1;j++)
{
sum+=a[j];
}
cout<<setiosflags(ios::fixed)<<setprecision(2)<<sum/(m-2)<<endl;
}
}
java
package com.imooc;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class dog extends Animal {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int t =1;
double sum = 0.00 ;
int m = in.nextInt();
double a[]= new double[m];
for(int i=0;i<m;i++) {
a[i]=in.nextDouble();
}
Arrays.sort(a);
for(int j=1;j<m-1;j++) {
sum+=a[j];
}
System.out.println(String.format("%.2f", sum/(m-2)));
}
}
}
Problem Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2
4 2
Sample Output
3 6
3 7
Author
lcy
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n;//m和n
while(cin>>n>>m)
{
int t = n/m;
int sum[100]= {
0};
int a=2;
if(n%m==0)//如果正好分完
{
for(int i=0; i<t; i++)
{
for(int j =0 ; j<m; j++)
{
sum[i]+=a;//加的都是2的倍数
a+=2;
}
}
}
else //最后不足m个
{
for(int i=0; i<=t; i++)
{
if(i!=t)
{
for(int j =0 ; j<m; j++)
{
sum[i]+=a;
a+=2;
}
}
else
{
for(int j =0 ; j<(n-(t*m)); j++)
{
sum[i]+=a;
a+=2;
}
}
}
}
//输出的时候也要分是否完全平分
if(n%m==0)
{
//pingfen
for(int k=0; k<t; k++)
{
if(k==0)
cout<<sum[k]/m;
else
cout<<" "<<sum[k]/m;//除m肯定不是小数
}
cout<<endl;
}
else
{
for(int k=0; k<t; k++)
{
if(k==0)
cout<<sum[k]/m;
else
cout<<" "<<sum[k]/m;
}
cout<<" "<<sum[t]/(n-m*t)<<endl;//最后一个除数不是m,不用忘了区分
}
}
}
java
public class oj {
public static void main(String[] args) {
// 主函数
Scanner in = new Scanner(System.in);
int[] num = new int[100];
int t = 2;
for (int i = 0; i < 100; i++) {
num[i] = t;
t += 2;
}
while (in.hasNext()) {
int n = in.nextInt();
int m = in.nextInt();
List<Integer> list = new ArrayList<>();
if (n % m == 0) {
for (int i = 0; i < n; i+=m) {
int sum = 0;
for (int j = i; j < i + m; j++) {
sum += num[j];// 和做c的时候用的方法不太一样。
}
list.add(sum / m);
}
} else {
int i = 0;
for (; i < n - (n % m); i += m) {
int sum = 0;
for (int j = i; j < i + m; j++) {
sum += num[j];
}
list.add(sum / m);
}
int sum = 0;
m = n % m;
for (int j = i; j < n; j++) {
sum += num[j];
}
list.add(sum / m);
}
for (int i = 0; i < list.size() - 1; i++) {
System.out.print(list.get(i) + " ");
}
System.out.println(list.get(list.size() - 1));
}
}
}
Problem Description
输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
0
Sample Output
1 2 3 4
1 4 3 2 5
Author
lcy
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n){
if(n==0)return 0;
int a[n+1];
for (int i=0;i<n;i++){
//下面java是输入即找到最小值,少了一个for循环,建议看看。
cin>>a[i];
}
int t=0;//t是最小值的下标
for(int i=1;i<n;i++){
if(a[t]>a[i]){
t=i;
}
}
int temp;
temp = a[t];
a[t] = a[0];
a[0] = temp;
for(int i=0;i<n;i++){
if(i==0){
cout<<a[0];
}
else cout<<" "<<a[i];
}
cout<<endl;
}
}
public class oj{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int n = in.nextInt();
if(n==0) {
break;
}
int[] num = new int [n];
num[0] = in.nextInt();//输入的时候直接找出最大值,少用一个for循环
int t = 0;
int temp;
for(int i=1 ;i<n;i++) {
num[i] = in.nextInt();
if(num[i]<num[t]) {
t = i;
}
}//输入结束,比较也结束
temp = num[t];
num[t]= num[0];
num[0]=temp;
//shuchu
for(int i =0 ;i<n;i++) {
if(i==0)
System.out.print(num[i]);
else System.out.print(" "+num[i]);
}
System.out.println();
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string s;
for(int i = 0;i<n;i++){
cin>>s;
int num=0;
int alp = 0;
int len = s.size();
for(int i=0;i<len;i++){
if(isdigit(s[i]))
num++;
}
cout<<num<<endl;
}
}
public class oj{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for(int i=0;i<n;i++) {
String s = in.next().toLowerCase();
int sum = 0;
for(int j= 0 ;j<s.length();j++) {
if(Character.isDigit(s.charAt(j)))
sum++;
}
System.out.println(sum);
}
}
}
HDU 2018
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
int a[55];
a[0] = 1;
a[1]=2;
a[2]=3;
a[3]=4;
for(int i=4; i<55; i++)
{
a[i] = a[i-3]+a[i-1];
}
while(cin>>n)
{
if(n==0)
return 0;
cout<<a[n-1]<<endl;
}
}
public class oj {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
long[] amount = new long [54];
amount[0] = 1;
amount[1] = 2;
amount[2] = 3;
amount[3] = 4;
for (int i = 4; i < amount.length; i++) {
amount[i] = amount[i-1]+amount[i-3];
}
while(in.hasNext()) {
int n = in.nextInt();
if(n==0) {
break;
}
System.out.println(amount[n-1]);
}
}
}
HDU 4519
郑厂长的故事,想去腾讯
#include<bits/stdc++.h>//想起来比写起来难多了
using namespace std;
int main()
{
int T;
cin>>T;
for(int i=0;i<T;i++){
int sum=0;
int N,K,M;
cin>>N>>K>>M;//输入人数,项目数,医生数
//当医生比员工多,那就相当于一个医生看一个员工,
//直接就项目数多少就多少分钟
if(M>=N)
sum=K;
else {
if((N*K)%M==0){
//如果项目总数正好可以被医生平分
sum=(N*K)/M;
}
else {
sum=(N*K)/M+1;
}
}
cout<<sum<<endl;
}
}
HDU 2019
#include<bits/stdc++.h>
using namespace std;
int main()//只用一个for循环,应该跟简单,直接在输入中进行比较并排序。
{
int n,m;
//n为数列长度
//m为插入的数
while(cin>>n>>m)
{
int a[n+2];
if(n==0&&m==0)
return 0;
int flag=0;
for(int i=0; i<=n; i++)
{
cin>>a[i];
if(i!=n-1)
{
if(a[i]>m&&a[i-1]<=m&&flag==0)
{
int t=a[i];
a[i]=m;
i++;
a[i]=t;
flag=1;
}
}
else//已知列表在最后一个的前面或者后面插入元素
{
if(a[i]>m&&a[i-1]<=m&&flag==0)
{
int t=a[i];
a[i]=m;
i++;
a[i]=t;
flag=1;
i++;
}
}
}
for(int i=0; i<=n; i++)
{
if(i==0)
cout<<a[0];
else
cout<<" "<<a[i];
}
cout<<endl;
}
}
HDU 2020 绝对值排序
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
int a[101];
while(cin>>n)
{
// cin>>a[0];//本来想边输入边排序,后来发现这样会进行多个for循环,虽然次数少,但是总的时间加起来多
if(n==0)
return 0;
for(int i=0; i<n; i++) //全都输入后直接排序
{
cin>>a[i];
}
for(int i=0; i<n; i++)//冒泡排序,还是有点复杂,数据结构还是要好好学。因相当于第一个for将最大的放到前面,所以可以直接输出,
如果排序方法像java版一样就不能直接写在一个for里
{
int m = a[i];
for(int j =i ; j<n; j++)
{
if(abs(a[i])<abs(a[j]))
{
m = a[j];
a[j] = a[i];
a[i] =m;
}
}
if(i==0)
cout<<a[0];
else
cout<<" "<<a[i];
}
cout<<endl;
}
}
public class oj{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int n = in.nextInt();
if(n==0) {
break;
}
int[] a = new int [n];
for(int i=0;i<n;i++) {
a[i]=in.nextInt();
}
int t;
for(int i=0;i<n;i++) {
for(int j=0;j<n-i-1;j++) {
if(Math.abs(a[j+1])>Math.abs(a[j])) {
t = a[j+1];
a[j+1] = a[j];
a[j] = t;
}
}
}
for (int i = 0; i < a.length-1; i++) {
System.out.print(a[i]+" ");
}
System.out.println(a[a.length-1]);
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n==0)
return 0;
int sum=0;
int a[102];
for(int i=0; i<n; i++)
{
cin>>a[i];
int bai=a[i]/100;
int wushi = a[i]%100/50;
int shi = (a[i]%100%50)/10;
int wuyuan = (a[i]%100%50%10)/5;
int two = a[i]%100%50%10%5/2;
int one = a[i]%100%50%10%5%2;
sum+=(bai+wushi+shi+wuyuan+two+one);
}
cout<<sum<<endl;
}
}
java
public class oj{
public static void main(String[] args) {
//人数
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int n =in.nextInt();
if(n==0)break;
int sum = 0;
for(int i=0;i<n;i++) {
int money = in.nextInt();
int bai = money/100;
int wushi = money%100/50;
int shi=(money%100-wushi*50)/10;
int five = (money%10)/5;
int two = (money%10-five*5)/2;
int one = money%10-five*5-two*2;
sum+=(bai+wushi+shi+five+two+one);
}
System.out.println(sum);
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n;
while(cin>>m>>n){
int a[m+1][n+1];
int max_;int lie,hang;
for(int i=0;i<m;i++){
//输入
for(int j=0;j<n;j++){
cin>>a[i][j];
if(i==0&j==0)
max_=abs(a[0][0]);
if(max_<abs(a[i][j])){
max_=abs(a[i][j]);
hang = i;
lie= j;
}
}
}
cout<<hang+1<<" "<<lie+1<<" "<<a[hang][lie]<<endl;
}
}
public class oj{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int m = in.nextInt();
int n = in.nextInt();
int[][] a = new int[m][n];
int max = 0;
int hang=1,lie=1;
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
a[i][j]=in.nextInt();
if(i==0&&j==0)max = Math.abs(a[0][0]);
if(max<Math.abs(a[i][j]))
{
max =Math.abs(a[i][j]);
hang = i+1;
lie = j+1;
}
}
}
System.out.println(hang+" "+lie+" "+a[hang-1][lie-1]);
}
}
}
HDU 1003 有关动态规划问题
public class oj{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
for(int i=0;i<n;i++) {
//输入每一例
int m = in.nextInt();
int max=-9999;
int[] a = new int [m];
for(int j=0;j<m;j++) {
a[j]= in.nextInt();
}
int begin = 0,begin2 = 0;
int end = -1,end2=-1;
int sum = 0;
for(int i1=0;i1<m;i1++) {
sum+=a[i1];
end2++;
if(sum>max) {
max=sum;
begin = begin2;
end = end2;
}
if(sum<0) {
sum=0;
begin2 = i1+1;
end2 = i1;
}
}
System.out.printf("Case %d:%n%d %d %d%n",i+1,max,begin+1,end+1);
if(i!=n-1)
System.out.println();
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
getchar();
string s;
while(n--){
int flag = 0;
getline(cin,s);
int len=s.length();//字符串的长度
if(len>50)
{
flag=0;
}
else if(isalpha(s[0])||s[0]=='_'){
flag=1;
for(int i=1;i<len;i++){
if(!isalnum(s[i])&&s[i]!='_'){
flag=0;
break;
}
}
}
if(flag==0)
cout<<"no"<<endl;
else cout<<"yes"<<endl;
}
}
#include<bits/stdc++.h>//这样属于一种偷懒式做法?,反正不值得浮现java了
using namespace std;
int main()
{
char a[106];
while(~scanf("%s",a)){
int len = strlen(a);
int maxx=0;
for(int i=0;i<len;i++)
{
if(a[i]>a[maxx])
maxx=i;
}
for(int i=0;i<len;i++){
if(a[i]==a[maxx])
cout<<a[i]<<"(max)";
else cout<<a[i];
}
cout<<endl;
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
char c[108];
while(gets(c))
{
int len=strlen(c);
char f=toupper(c[0]);
c[0]=toupper(c[0]);
for(int i=0;i<len;i++)
{
if(c[i]==' ')c[i+1]=toupper(c[i+1]);
}
cout<<c<<endl;
}
}
java
public class oj{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
StringBuffer bu = new StringBuffer(in.nextLine());
bu.setCharAt(0, (char) (bu.charAt(0)-32));
for(int i=1;i<bu.length()-1;i++) {
if(bu.charAt(i)==' ') {
bu.setCharAt(i+1, (char) (bu.charAt(i+1)-32));
}
}
System.out.println(bu.toString());
}
}
}
HDU 1008
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n){
int sum=0;
if(n==0) return 0;
int a[101];
a[0]=0;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
int t=a[i]-a[i-1];
if(t>0){
sum+=t*6+5;
}
else {
sum+=(-t)*4+5;
}
}
cout<<sum<<endl;
}
}
用一个简单的递归就行,唯一难得一点就是,如果不找规律暴力的话会超时,所以先找一下规律。
#include<bits/stdc++.h>
using namespace std;
int f(int a,int b,int n){
if(n==1)
return 1;
if(n==2)
return 1;
else
return (a*f(a,b,n-1)+b*f(a,b,n-2))%7;
}
int main()
{
int a,b,n;
while(cin>>a>>b>>n)
{
if(a==b&&b==n&&n==0)return 0;
cout<<f(a,b,n%49)<<endl;//由于f(n-1)和f(n-2) 取值只有0,1,2,3.4,5,6这7种取值,
//A,B为固定值,所有f(n) = A * f(n - 1) + B * f(n - 2) 有7 * 7 = 49 种取值。
}
}
#include<bits/stdc++.h>
using namespace std;
int ge(int n)
{
int m=0;
if(n<10)
return n;
else
{
while(n>0)
{
m+=n%10;
n/=10;
}
ge(m);
}
}
int main()
{
char n[1001];
int i=0;
while(cin>>n)
{
int sum=0;
if(n[0]=='0')
break;
for(int i=0;n[i]!='\0';i++)
{
sum+=n[i]-48;//相当于-'0'
//if(sum>9)sum=sum%10+sum/10;直接加这一句就不用那个递归了.开始没注意这个东西。后来再别人博客看的,还有数论的结论:Digtial Roots=(sum-1)%9+1
}
cout<<ge(sum)<<endl;
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
while(n--)
{
int n1=0,n2=0,n3=0,n4=0,n5=0;
char a[101];
gets(a);
for(int i=0;i<strlen(a);i++)
{
if(a[i]=='a')
n1++;
else if(a[i]=='e')
n2++;
else if(a[i]=='i')
n3++;
else if(a[i]=='o')
n4++;
else if(a[i]=='u')
n5++;
}
cout<<"a:"<<n1<<endl<<"e:"<<n2<<endl<<"i:"<<n3<<endl<<"o:"<<n4<<endl<<"u:"<<n5<<endl;
if(n!=0)
cout<<endl;
}
}
public class oj{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
in.nextLine();
while(n!=0) {
int a1=0,a2=0,a3=0,a4=0,a5=0;
String s=in.nextLine();
for(int i=0;i<s.length();i++) {
if(s.charAt(i)=='a')
{
a1++;
}
else if(s.charAt(i)=='e') {
a2++;
}
else if(s.charAt(i)=='i') {
a3++;
}
else if(s.charAt(i)=='o') {
a4++;
}
else if(s.charAt(i)=='u') {
a5++;
}
}
System.out.println("a:"+a1);
System.out.println("e:"+a2);
System.out.println("i:"+a3);
System.out.println("o:"+a4);
System.out.println("u:"+a5);
if(n!=0)
System.out.println();
n--;
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i;
int t=1;
cin>>i;
double n,m;
while(i--)
{
while(cin>>n>>m)
{
if(n==m&&n==0)
break;
int sum=0;
for(double j=1; j<n; j++)
{
for(double k=1; k<j; k++)
{
double a=(j*j+k*k+m)/(j*k);
if(floor(a+0.5)==a)
sum++;
}
}
cout<<"Case "<<t<<": ";
t++;
cout<<sum<<endl;
}
t=1;
if(i)cout<<endl;
}
}
这种也没必要再重现java了
@[TOC]111
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
//int a[26]={0};//一开始想都初始为1,后来想还是这样输出的时候方便,后来理解“正确题意后就用不到了。”
while(n--)
{
string s;
cin>>s;
int len=s.size();
for(int i=0;i<len;i++)
{//
int t=0;
for(int j=i;j<len;j++)
{
if(s[i]==s[j])//找后面相连一样的
{
t++;
continue;
}
else break;
}
if(t==1)cout<<s[i];
else cout<<t<<s[i];
i=i+t-1;
}
cout<<endl;
}
}
java
import java.util.Scanner;
public class main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
in.nextLine();
while (n != 0) {
String s = in.nextLine();
for (int i = 0; i < s.length(); i++) {
int t = 0;
for (int j = i; j < s.length(); j++) {
if (s.charAt(i) == s.charAt(j)) {
t++;
continue;
} else
break;
}
if (t == 1)
System.out.print(s.charAt(i));
else
{
System.out.print(t);
System.out.print(s.charAt(i));
}
i = i + t - 1;
}
System.out.println();
n--;
}
}
}
#include<bits/stdc++.h>
using namespace std;
int p[10001];
char a[10001];
char b[10001];
stack<char>t;
int main()
{
int n,f,m,i;
while(cin>>n>>a>>b)
{
while(!t.empty())
t.pop();
f=0;
m=0;
for(i=0;i<n;++i){
t.push(a[i]);//入栈
p[m]=1;
m++;
while(!t.empty()&&t.top()==b[f])//又符合出栈要求的就出栈,没有就放里面,如果可以顺利出全,那就OK
{
p[m]=0;
m++;
t.pop();
f++;
}
}
if(t.empty())//正好可以顺利进出
{
cout<<"Yes."<<endl;
for(int j=0;j<2*n;j++){
if(p[j])
cout<<"in"<<endl;
else
cout<<"out"<<endl;
}
}
else
cout<<"No."<<endl;
cout<<"FINISH"<<endl;
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
while(cin>>m>>n){
int a[m];
int k=1;//注意1就是1~N的序列,so the k should begin at 1.
for(int i=0;i<m;i++){
a[i]=i+1;
}
while(next_permutation(a,a+m))//maybe n is biger than m
{
k++;
if(k==n)
break;
}
for(int i=0;i<m;i++){
if(i==0)
cout<<a[i];
else
cout<<" "<<a[i];
}
cout<<endl;
}
}
#include <bits/stdc++.h>
using namespace std;
int gongbeishu(int n,int m)//求最大公倍数
{
//先转换大小
int a=n,b=m;
int f;
if(n<m){
int t=n;
n=m;
m=t;
}
while(m!=0){
f=n%m;
n=m;
m=f;
}//n就是两个数的最小公约数
return a/n*b;//使用最小公约数求最大公倍数
}
int main()
{
int n;
int a[1001];
while(scanf("%d",&n)!=EOF){
cin>>a[0];
for(int i=1;i<n;i++){
scanf("%d",&a[i]);
a[i]=gongbeishu(a[i],a[i-1]);//输入一个求一个,两个两个的求最后就可以求出整个序列的
}
cout<<a[n-1]<<endl;
}
}
public class oj {
public static int gbs(int n,int m) {
int a=n,b=m;
if(n<m) {
int t=n;
n=m;
m=t;
}
int f;
while(m!=0) {
f=n%m;
n=m;
m=f;
}
return a/n*b;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
int n = in.nextInt();
int [] a = new int[n];
a[0]=in.nextInt();
for(int i=1;i<n;i++) {
a[i]=in.nextInt();
a[i]=gbs(a[i],a[i-1]);
}
System.out.println(a[n-1]);
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int i,j;
while(n--)
{
int flag=0;
string s;
cin>>s;
getchar();
int len=s.size();
if(len%2==0) //偶数
{
for(i=len/2-1,j=len/2; i>=0,j<=len-1; i--,j++)//一定要注意i和j 的取值范围
{
if(s[i]!=s[j])
{
flag=1;
break;
}
}
}
else
{
for(i=len/2,j=len/2;i>=0,j<len;i--,j++){
if(s[i]!=s[j])
{
flag=1;
break;
}
}
}
if(flag==1)
cout<<"no"<<endl;
else
cout<<"yes"<<endl;
}
}
public class oj {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
in.nextLine();
int i,j;
while(n!=0) {
int flag=1;
String s = in .nextLine();
int len=s.length();
for(i=0;i<len;i++) {
if(s.charAt(i)!=s.charAt(len-i-1)) {
flag=0;
}
}
if(flag==0)
System.out.println("no");
else System.out.println("yes");
n--;
}
}
}
#include<bits/stdc++.h>
using namespace std;
int m;
int maxx(double *a)
{
int t=0;
for(int i=0;i<m;i++){
if(a[i]>a[t])
t=i;
else continue;
}
a[t]=-1;
return t+1;
}
//开始的时候要看清题,开始以为是输出最大的打分,后来让输出最大打分的下标
//然后又WA,又看见是下标要从小到大输出。唉
int main()
{
int n,k;
while(~scanf("%d %d %d",&n,&m,&k))
{
double score[m];
double t;//t是个double,也不报错,自己找了好久
memset(score,0,sizeof(double)*m);//注意double多占 的内存
for(int j=0; j<n; j++)
{
for(int i=0; i<m; i++)
{
scanf("%lf",&t);
score[i]+=t;
}
}
// for(int i=0;i<m;i++)
// {
// cout<<" "<<score[i];
// }
//sort(score);
int b[k];
for(int i=0;i<k;i++){
b[i]=maxx(score);
}
sort(b,b+k);
for(int i=k-1;i>=0;i--){
if(i==k-1)cout<<b[i];
else cout<<" "<<b[i];
}
cout<<endl;
}
}
#include<bits/stdc++.h>
using namespace std;
int ti;
int times(int n)
{
if(n==1)return ti;
else if(n%2!=0){
ti++;
times(3*n+1);
}
else
{ti++;
times(n/2);
}
}
int main()
{
int m,n;int a,b;
while(cin>>m>>n){
a=m;
b=n;
if(a>b){
int f=a;
a=b;
b=f;
}
int maxx=0;
for(int i=a;i<=b;i++){
ti=0;//每次for都要归0一次
int t=times(i);
if(t>maxx)
maxx=t;
}
printf("%d %d %d\n",m,n,maxx+1);
}
}
HDU 1039
#include<bits/stdc++.h>
using namespace std;
string s;
bool yuanyin(int n)
{
for(int i=0; i<n; i++)
{
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
return true;
}
return false;
}
bool lianxu1(int n)//连续的两个不能相等
{
for(int i=0; i<n-1; i++)
{
if(s[i]==s[i+1]&&s[i]!='e'&&s[i]!='o')
return false;
}
return true;
}
bool lianxu2(int n)//不能有连续的三个元音或者辅音
{
int a=0,b=0,c=0;//a代表元音连续的次数,b代表辅音连续的次数,c代表前一个的状态,看是否从辅音到元音,或者从元音到辅音。
if(s[0]=='a'||s[0]=='e'||s[0]=='i'||s[0]=='o'||s[0]=='u')
{
c=1;
}
else
c=0;
for(int i=0; i<n; i++)
{
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
{
if(c==1)
a++;
else
{
a++;
b=0;
c=1;
}
}
else
{
if(c==0)
b++;
else
{
b++;
a=0;
c=0;
}
}
if(a>2||b>2)return false;
}
return true;
}
int main()
{
while(cin>>s)
{
getchar();
if(s=="end")
break;
int len=s.size();
if(yuanyin(len))//存在元音
{
if(lianxu1(len))
{
if(lianxu2(len))
{
cout<<"<"<<s<<"> is acceptable."<<endl;
}
else
cout<<"<"<<s<<"> is not acceptable."<<endl;
}
else
cout<<"<"<<s<<"> is not acceptable."<<endl;
}
else
{
cout<<"<"<<s<<"> is not acceptable."<<endl;
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[200];
while(~scanf("%s",a)){
int dir=1;//0 1 2 3 东南西北
int x=310,y=420;
cout<<"300 420 moveto"<<endl<<"310 420 lineto"<<endl;
int len = strlen(a);
for(int i=0;i<len;i++)
{
if(a[i]=='A'){
if(dir==0){
dir=1;
x+=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
else if(dir==1){
dir=2;
y-=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
else if(dir==2){
dir=3;
x-=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
else
{
dir=0;
y+=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
}
else
{
if(dir==0){
dir=3;
x-=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
else if(dir==1){
dir=0;
y+=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
else if(dir==2){
dir=1;
x+=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
else
{
dir=2;
y-=10;
cout<<x<<" "<<y<<" lineto"<<endl;
}
}
}
printf("stroke\nshowpage\n");
}
}
public class oj {
/*
public int jisuan(int a,int b) {
return a*b;
}
public String nameandage(int age,String name,int a,int b) {
return name+"年纪"+age+"计算出"+a+"*"+b+"="+jisuan(a, b);
}
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(in.hasNext()) {
BigInteger n = BigInteger.ONE;//如果大数n定义在while外边,这里也要初始化一下
int m=in.nextInt();
while(m!=0) {
n=n.multiply(BigInteger.valueOf(m--));
}
System.out.println(n);
}
}
}
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
int a[100006];
struct point
{
double x;
double y;
}p[100006];
int cmpx(const point &a,const point &b){
//自定义排序参数
return a.x < b.x;
}
int cmpy(const int &a,const int &b){
//自定义排序参数
return p[a].y < p[b].y;
}
double dis(int a,int b){
//求两个点组成圆的直径
return sqrt((p[a].x - p[b].x) * (p[a].x - p[b].x) + (p[a].y - p[b].y) * (p[a].y - p[b].y));
}
double min(double x,double y)//求两个double型数的较小的那个
{
return x<y?x:y;
}
double fenzhi(int left , int right){
if(left==right)
return 100000;
if(left+1==right){
return dis(left,right);//求left和right两点组成圆的半径
}
int mid = (left+right)>>1;
double ll=fenzhi(left,mid);//分治求左边
double rr=fenzhi(mid,right);//分治求右边
double lr=min(ll,rr);//最小的
int k=0;
for(int i=left;i<=right;i++){
if(fabs(p[mid].x-p[i].x)<lr)
{
a[k]=i;
k++;
}
}
sort(a,a+k,cmpy);//按照y坐标排序,x相距小于d的再比较y放向
for(int i=0;i<k-1;i++){
for(int j=i+1;j<i+7&&j<k;j++){
if(p[a[j]].y - p[a[i]].y >=lr)
break;
lr = min(lr,dis(a[i],a[j]));
}
}
return lr;
}
int main()
{
//半径最大的就是最近两点的距离的一半
int i,n;
while(scanf("%d",&n) != 0)
{
if(!n)
break;
for( i = 0; i < n; i++ )
{
scanf("%lf %lf",&p[i].x,&p[i].y);
}
sort(p,p+n,cmpx); //按x坐标排序
printf("%.2f\n",fenzhi(0,n-1) / 2);
}
return 0;
}
初识pytorch中的Dataset和DataLoader
当我们需要下载python包的时候,默认是从境外镜像进行下载的,速度会很慢,如何我们下载jieba,使用下面命令:pip install jieba一个20M的文件包,可能需要大几分钟的时间。我们将镜像换成清华镜像,秒几就能完成任务。运行指令如下:pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple/...
Celery是Python开发的分布式任务调度模块,今天抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务。Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有RabbitMQ、Redis甚至是数据库,当然Redis应该是最佳选择。安装Celery用pip或easy_install安装:$ sudo pip install Cel...
一般建议:The MathWorks有很多教学资源,可以给你一些课程的想法.一些示例链接:具体建议:我发现有趣的非线性动力学研究课题之一是Lorenz oscillators.洛伦兹振荡器是一个可以表现出混沌行为的三个变量的非线性系统.这样一个系统将为学生提供数学计算的机会(iterative methods,用于模拟微分方程系统,稳定性和收敛性等).这个项目最有趣的是我们使用Lorenz振荡器对...
关注+星标公众号,不错过精彩内容一、 前言大家好,我是『strongerHuang』黄工,这一年来,感谢大家对公众号的支持,但是感谢不能停留在嘴上,所以,这次邀请了正点原子赞助。一起给大...
文章目录用流收集数据收集器的用途收集器简介收集器用作高级归约归约和汇总计算总数-counting查找流中的最大值和最小值-minBy maxByCollectors.maxBy汇总总数 Collectors.summingXXXsummingIntsummingLong summingDouble平均数-averagingXXX统一获取汇总信息-summarizingXXXsummarizingI...
题目描述打印数字正方形输入描述输入一个整数n,1<=n<=31输出描述输出数字正方形。注意,每个数字占4个字符,右对齐,不全则补足空格;样例输入10样例输出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2...
为什么80%的码农都做不了架构师?>>> ...
pycharm 快捷键提示CTRL Q: 在参数列表位置,显示可以输入的所有参数。CTRL Q: 查看选中方法的文档字符串阅读CTRL -: 折叠当前代码CTRL +: 展开当前代码CTRL SHIFT -: 折叠所有代码CTRL SHIFT +: 展开所有代码CTRL SHIFT F7: 将当前单词在整个文件中高亮,F3移动到下一个,ESC取消高亮。CTRL F11...
现在来看第二部分,第二部分其实是把要用的模块文件压缩了一个接一个放在一起就行了。压缩算法的名字叫lh5,一提到算法,国内研究这种“低层次”东西的人就少了(大家都搞往窗体上拖放几个控件就能实现功能的高层次的应用程序)。好在我在国外的网站上无意中发现了lh5压缩算法的源码,用TC写的,我又从网上把TC这个老古董下载下来,最后居然编译成功了(当然做过一些修改),编译生成的文件名叫ar.exe(文中
function fbxx(u_id){ //我发布的信息 //alert(u_id); document.body.style.overflow = hidden; document.body.style.height = document.documentElement.clientHeight + px; window.open(user_index_fbxx.jsp,_bl
百度地图api设置点的设置代码为:var myIcon = new BMap.Icon();所以首先要找到这行代码,并在括号中加上图片信息:var myIcon = new BMap.Icon("http://map.baidu.com/image/us_mk_icon.png", new BMap.Size(50,50));很多人使用过程中会发现如果百度地图的这...