当前位置:首页 大学排名 华南农业大学新生c语言竞赛题--韩信点兵

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

发布时间:2023-01-30 11:20:09

#include"stdio.h"

#include"math.h"

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

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,有什么问题可以找我!

华南农业大学新生c语言竞赛题--K尾相等数

#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

}

}

华南农业大学新生c语言竞赛题--约瑟夫环问题

解:对于一个数,它的幂是无穷多个的,但是末尾三位数只有1000种。这表明当第一次重复出现大于等于1000的末尾三位数时,这就是我们要求的M和N了.

源代码:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define LEN 1000

void main(){

int k,i,tail[LEN],m,flag

while(1){

scanf("%d",&k) //输入K

if(k==1) exit(0) //如果K等于1则退出

flag=0 //初始化

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

i=m=1//m为当前幂的次数,i等于k的m次幂

memset(tail,0,sizeof(int)*LEN)

if(k>=LEN){

k=k%LEN

flag=1

}

while(1){

i*=k

if(i>=LEN || flag==1){

if(tail[i%LEN]==0) tail[i%LEN]=m//这个末尾三位数是第一次出现

else {tail[i%LEN]+=mbreak}//末尾三位数出现了第二次,退出循环

flag=1

}

if(i>=LEN) i=i%LEN

m++

}

printf("%d ",tail[i%LEN])

}

}

#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

}

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

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

}

return temp

}

以上就是关于华南农业大学新生c语言竞赛题--韩信点兵全部的内容,如果了解更多相关内容,可以关注醉学网,你们的支持是我们更新的动力!

温馨提示:
本文【华南农业大学新生c语言竞赛题--韩信点兵】由作者 华南农业大学 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6