华南农业大学新生c语言竞赛题--韩信点兵

Python012

华南农业大学新生c语言竞赛题--韩信点兵,第1张

#include"stdio.h"

#include"math.h"

main()

{

int

a,b,c,d,e,f,g,h,A,B,C,D,E,F,G,H

long

i,sum=0

scanf("%d

%d

%d

%d

%d

%d

%d

%d",&A,&B,&C,&D,&E,&F,&G,&H)

scanf("%d

%d

%d

%d

%d

%d

%d

%d",&a,&b,&c,&d,&e,&f,&g,&h)

for(i=2i<pow(2,63)i++)

{

if(i%A==a&&i%B==b&&i%C==c&&i%D==d&&i%E==e&&i%F==f&&i%G==g&&i%H==h)

{

sum=i

break

}

}

printf("%ld",sum)

}

师弟啊,你们好幸运啊,我们去年来华农的时候,没可没有这么好的机会有这些竞赛哦,希望你好好把握!

其实这些体都不是很难,只是你们以前没接触过C语言而一时适应不了吧……其实每个初学C语言的人都认为好像有学了,但是好像不懂,其实你慢慢会懂得,你一直在进步,只是没感觉出来而已……

我建议你如果真的想学好C语言,要多多上机。学校不个带电脑不是借口,东区实验楼三楼的机子在星期一至星期五都是免费开放的,给你们上机做实验足够了哦,希望你们好好珍惜……

呵呵,可能说太多了吧,最后跟你说一下我自己,我是信息学院的,06级,QQ115881379,有什么问题可以找我!

#include<iostream>

using namespace std

void main()

{

int i,j,a[3]={2,20,12},c1,c2,f[100]={0},m,n,t=0,k=0,x

for(x=0x<=3x++)

{

for(i=1i<=120i++)

for(j=1j<=120j++)

if(i*i+j*j==a[x]*a[x] || i*i-j*j==a[x]*a[x]|| j*j-i*i==a[x]*a[x])

{

if(i>j)

{ c1=i

c2=j

}

else

{c1=j

c2=i

}

if(k>0)

for(m=0m<=k-1m++)

if(c1==f[m])

t=1

if(t==0)

{

f[k++]=c1

cout<<c1<<","<<c2<<endl

}

t=0

}

if(f[0]==0)

cout<<"没有解"<<endl

else

cout<<endl

}

}

/*

*File:Josephus.cpp

*Author:YangWudi

*Version 1.3b

*------------------------------------------

*这个程序主要用双向循环链表来实现约瑟夫问题 。

*/

#include <iostream>

#include <cstdio>

using namespace std

typedef int ElementType

struct Node

typedef struct Node *PtrToNode

typedef PtrToNode List

typedef PtrToNode Position

struct Node

{

ElementType element

Position prior

Position next

}

void Delete(Position P)

Position Forward(Position address, int step)

int main()

{

List L=NULL

int N, M, num

cout <<"Please enter the N and M" <<endl

while(1){

cin >>N >>M

num = N

if(N>0&&M>=0)break//判断N和M是否合法

cout <<"Don't you know the value input should fit N>0&&M>=0?!" <<endl

<<"Please enter N and M again:"

}

L = (List)malloc(sizeof(Node))

Position temp=L

for(int i=1i++){

temp->next = (List)malloc(sizeof(Node))

temp->element = i

if(i==N)break

temp->next->prior = temp

temp = temp->next

}

free(temp->next)//将多余分配的内存释放

temp->next = L

L->prior = temp

Position position=L, pause

while(num!=1){

pause = Forward(position, M%num)//传递完毕后的位置,也就是应该删除的位置

position = pause->next//下次开始时的位置

//没有打印语句可以减少运行时间,但数据规模小的时候加上可以清晰的反映删除的步骤,这个语句是否加上可选

//cout <<"Delete-" <<pause->element <<" "

Delete(pause)

num--

}

cout <<endl <<"Winner is:" <<position->element <<endl

system("pause")

return 0

}

/*Delete P from a list*/

void Delete(Position P)

{

P->next->prior = P->prior

P->prior->next = P->next

//free(P)//不释放内存为了提高运行效率,不过如果内存不够的话,还是应该调用free函数,所以这个地方可选

return

}

/*将现在位置的节点按照应该移动的步数向前移动,并且返回移动后所在位置的指针*/

Position Forward(Position address, int step)

{

Position temp=address

for(int i=0i<stepi++){

temp = temp->next

}

return temp

}