#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
}
}
解:对于一个数,它的幂是无穷多个的,但是末尾三位数只有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 //初始化
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
}
return temp
}
以上就是关于华南农业大学新生c语言竞赛题--韩信点兵全部的内容,如果了解更多相关内容,可以关注,你们的支持是我们更新的动力!
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【华南农业大学新生c语言竞赛题--韩信点兵】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态