教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

山东科技大学OJ集锦(11)

来源:网络收集 时间:2026-10-05
导读: 多组case,以EOF结尾。 每个case一行,只包含一个整数k(1 一个整数表示第k大的“神棍数” Sample Input 1 Sample Output 471 答案: #include int main() { unsigned long long int k; while (scanf(\ if (k==1) p

多组case,以EOF结尾。

每个case一行,只包含一个整数k(1<=k<=1000000000000000000)。 Output

一个整数表示第k大的“神棍数” Sample Input 1

Sample Output 471 答案:

#include int main() {

unsigned long long int k;

while (scanf(\ if (k==1)

printf(\ else

printf(\ return 0; } (3-10)J Description

所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等。如三阶魔方阵: 8 1 6 3 5 7 4 9 2

魔方阵的规律如下:

从1~N*N的 各个数依次如下规则存放: (1) 1在第一行中间一列;

(2) 每一个数存放的行比前一个数的行数减一,列数加一(如上的三阶方阵5在4的上一行,后一列);

(3) 如果上一个数在第一行,则下一个数在最后一行,列数加一; (4) 如果上一个数在最后一列,则下一个数在第一列,行数减一;

(5) 如果按上述规则确定的位置已经有数,或上一个数在第一行第N列,则下一个数放在上一个数的正下方。 Input

输入包含多组数据,每组为一个小于100的正奇数。 Output

对于每个输入的N,输出N阶魔方阵;两组数据之间用一个空行分隔。方阵中每行每两个数之间有一个空格,行首和行末没有多余的空格。 Sample Input 3

Sample Output

8 1 6 3 5 7 4 9 2

#include int main() {

int a,b, c, d,i,j; int s[100][100] ;

while(scanf(\ if(b%2!=0) {

for (i=0;i

s[0][d] = 1;

for(a=2;a<=b*b;a++) {

if(c-1>=0) {

if(d+1>b-1) {

c=c-1; d=0; } else {

if(s[c-1][d+1]!=0) c=c+1; else {

c=c-1; d=d+1; } } } else {

if(d+1>b-1) c=c+1; else {

c=b-1;

d=d+1; } }

s[c][d]=a; }

for(i=0;i

for(j=0;j

printf(\ else

printf(\ }

printf(\ }printf(\ }

return 0; }

第四次作业

Problem A: Sequence Problem : Array Pratice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 303 Solved: 53 [Submit][Status][Web Board] Description

整数序列是一串按特定顺序排列的整数,整数序列的长度是序列中整数的个数,不可定义长度为负数的整数序列。

两整数序列A、B的和定义为一个新的整数序列C,序列C的长度是A、B两者中较长的一个,序列C的每个位置上的整数都是A、B对应位置之和。若序列A、B不等长,不妨假设A比B整数多,那么序列C中多出B的那部分整数视作A的对应位置上的整数与0相加。 你的任务是计算符合某些要求的整数序列的和,这些序列中的整数都是小于1000的非负整数。 Input

输入为多行,直到文件末尾结束。每行第一个整数为N(N<=1000),后接一个长度为N的整数序列。 Output

对输入的整数序列两两相加:第1行和第2行相加、第3行和第4行相加??按顺序输出结果:每行输出一个整数序列,每两个整数之间用一个空格分隔。若序列数目不为偶数,则视作补一个长度为0的整数序列相加。

值得注意的是一个长度为0的整数序列也应该有输出,即使没有整数输出,也应该占有一行,因为“每行输出一个整数序列”。 Sample Input 3 1 2 3

5 10 15 20 30 50 4 100 200 300 400

Sample Output 11 17 23 30 50 100 200 300 400 HINT

这里最少要用到一个数组来存数整数序列或整数序列的和。 #include int main() {

int M,N,j,i,temp;

while(scanf(\ {

int a[1000]={0},b[1000]={0}; for(i=0;i

if(scanf(\ {

for(i=0;i

if(M==0&&N==0) printf(\ else {

if(M>N) temp=M; else temp=N;

for(i=0;i

if(i==(temp-1))

printf(\ else

printf(\ } } } else

{if(M==0) printf(\ else {

for(i=0;i

{if(i==(M-1)) printf(\ else printf(\ }

break; } }

return 0;

}

Problem B: Sequence Problem (II) : Array Pratice Time Limit: 1 Sec Memory Limit: 4 MB Submit: 404 Solved: 65 [Submit][Status][Web Board] Description

整数序列是一串按特定顺序排列的整数,整数序列的长度是序列中整数的个数,不可定义长度为负数的整数序列。

两整数序列A、B的和定义为一个新的整数序列C,序列C的长度是A、B两者中较长的一个,序列C的每个位置上的整数都是A、B对应位置之和。若序列A、B不等长,不妨假设A比B整数多,那么序列C中多出B的那部分整数视作A的对应位置上的整数与0相加。 你的任务是计算符合某些要求的整数序列的和,这些序列中的整数都是小于1000的非负整数。 Input

输入的第一行为一个整数M(M>0),后面有M行输入。每行输入为不超过1000个整数的整数序列,每个整数序列的输入均以0结束。 Output

对输入的整数序列两两相加:第1行和第2行相加、第3行和第4行相加??按顺序输出结果:每行输出一个整数序列,每两个整数之间用一个空格分隔。若序列数目不为偶数,则视作补一个长度为0的整数序列相加。

值得注意的是一个长度为0的整数序列也应该有输出,即使没有整数输出,也应该占有一行,因为“每行输出一个整数序列”。 Sample Input 3

1 2 3 0

10 15 20 30 50 0 100 200 300 400 0 Sample Output 11 17 23 30 50 100 200 300 400 HINT

这里最少要用到一个数组来存数整数序列或整数序列的和。一个省事的做法是把数组定义的稍微大一点,因为有时你的程序可能会边界处理的不是太好。 #include int main() {

int M,N,i,j,k,temp; scanf(\

for(i=0;i<((M+1)/2);i++)

{ int a[10000]={0},b[10000]={0}; for(j=0;j<10000;j++) { scanf(\ if(a[j]==0) break; }

…… 此处隐藏:1300字,全部文档内容请下载后查看。喜欢就下载吧 ……
山东科技大学OJ集锦(11).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/612115.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)