版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五屆藍(lán)橋杯基礎(chǔ)訓(xùn)練題1.問(wèn)題描述Fibonacci數(shù)列的遞推公式為:Fn=Fn-1+Fn-2,其中F1=F2=1。當(dāng)n比較大時(shí),F(xiàn)n也非常大,現(xiàn)在我們想知道,F(xiàn)n除以10007的余數(shù)是多少。輸入格式輸入包含一個(gè)整數(shù)n。輸出格式輸出一行,包含一個(gè)整數(shù),表示Fn除以10007的余數(shù)。說(shuō)明:在本題中,答案是要求Fn除以10007的余數(shù),因此我們只要能算出這個(gè)余數(shù)即可,而不需要先計(jì)算出Fn的準(zhǔn)確值,再將計(jì)算的結(jié)果除以10007取余數(shù),直接計(jì)算余數(shù)往往比先算出原數(shù)再取余簡(jiǎn)單。樣例輸入10樣例輸出55樣例輸入22樣例輸出7704數(shù)據(jù)規(guī)模與約定1<=n<=1,000,000。#include
<stdlib.h>#include
<stdio.h>#define
MOD
10007#define
MAXN
1000001int
n,
i,
F[MAXN];int
main(){
scanf("%d",
&n);
F[1]
=
1;
F[2]
=
1;
for
(i
=
3;
i
<=
n;
++i)
F[i]
=
(F[i-1]
+
F[i-2])
%
MOD;
printf("%d\n",
F[n]);
return
0;}2.問(wèn)題描述給定一個(gè)長(zhǎng)度為n的數(shù)列,將這個(gè)數(shù)列按從小到大的順序排列。1<=n<=200輸入格式第一行為一個(gè)整數(shù)n。
第二行包含n個(gè)整數(shù),為待排序的數(shù),每個(gè)整數(shù)的絕對(duì)值小于10000。輸出格式輸出一行,按從小到大的順序輸出排序后的數(shù)列。樣例輸入5
83649樣例輸出34689#include
<stdio.h>#include
<stdlib.h>void
Print(int
*data,int
n){
int
i;
for(i=0;i<n;i++)
{
printf("%d
",data[i]);
}
printf("\n");}int
Split(int
*data,int
pre,int
rear){
int
value=data[pre];
while(pre<rear)
{
while(data[rear]>=value
&&
pre<rear)
rear--;
data[pre]=data[rear];
while(data[pre]<value
&&
pre<rear)
pre++;
data[rear]=data[pre];
}
data[pre]=value;
return
pre;}//快速排序void
QuickSort(int
*data,int
pre,int
rear){
if(pre<rear)
{
int
mid=Split(data,pre,rear);
QuickSort(data,pre,mid-1);
QuickSort(data,mid+1,rear);
}}int
main(){
int
i;
int
n;
int
*data;
scanf("%d",&n);
data=(int
*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&data[i]);
}
QuickSort(data,0,n-1);
Print(data,n);
return
0;}3.問(wèn)題描述給定n個(gè)十六進(jìn)制正整數(shù),輸出它們對(duì)應(yīng)的八進(jìn)制數(shù)。輸入格式輸入的第一行為一個(gè)正整數(shù)n(1<=n<=10)。
接下來(lái)n行,每行一個(gè)由0~9、大寫字母A~F組成的字符串,表示要轉(zhuǎn)換的十六進(jìn)制正整數(shù),每個(gè)十六進(jìn)制數(shù)長(zhǎng)度不超過(guò)100000。輸出格式輸出n行,每行為輸入對(duì)應(yīng)的八進(jìn)制正整數(shù)。注意輸入的十六進(jìn)制數(shù)不會(huì)有前導(dǎo)0,比如012A。
輸出的八進(jìn)制數(shù)也不能有前導(dǎo)0。樣例輸入2
39
123ABC樣例輸出71
4435274提示先將十六進(jìn)制數(shù)轉(zhuǎn)換成某進(jìn)制數(shù),再由某進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制。以下是C++的代碼(C的代碼沒寫)#include<iostream>#include<cmath>#include<cstring>using
namespace
std;int
e[16][4];int
f[3];int
a[500000],c[500000],b[200000];char
s[100000];int
main(){
int
n;
cin
>>
n;
for
(int
i
=
0;
i
<=
15;
i
++)
{
int
t
=
i;
for
(int
j
=
1;
j
<=
4;
j
++)
{
e[i
+
1][j]
=
t
%
2;
t
=
t
/
2;
}
}
for
(int
k
=
1;
k
<=
n;
k
++)
{
for
(int
i
=
1;
i
<=
400000;
i
++)
a[i]
=
0;
cin
>>
s;
int
l
=
strlen(s);
for
(int
i
=
0;
i
<
l;
i
++)
{
int
p;
if
(int
(s[i])
<
65)
p
=
int(s[i])
-
int('0');
else
p
=
int(s[i])
-
int('A')
+
10;
for
(int
j
=
1;
j
<=
4;
j
++)
a[4
*
i
+
j]
=
e[p
+
1][5
-
j];
}
l
=
4
*
l;
for
(int
i
=
1;
i
<=
l;
i
++)
c[i]
=
a[i];
for
(int
i
=
1;
i
<=
l;
i
++)
a[i]
=
c[l
-
i
+
1];
int
p
=
(3
-(l
%
3))
%
3;
l
=
l
+
p;
f[1]
=
1;
f[2]
=
2;
f[3]
=
4;
for
(int
i
=
1;
i
<=
l
/
3;
i
++)
{
b[i]
=
0;
for
(int
j
=
1;
j
<=
3;
j
++)
b[i]
=
b[i]
+
a[3
*
i
-
j
+
1]
*
f[4
-
j];
}
if
(b[l
/
3]
==
0)
l
--;
for
(int
i
=
l
/
3;
i
>=
1;
i
--)
cout
<<
b[i];
cout
<<
endl;
}
return
0;}3.問(wèn)題描述從鍵盤輸入一個(gè)不超過(guò)8位的正的十六進(jìn)制數(shù)字符串,將它轉(zhuǎn)換為正的十進(jìn)制數(shù)后輸出。
注:十六進(jìn)制數(shù)中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。樣例輸入FFFF樣例輸出65535#include<stdio.h>#include<string.h>
#include<math.h>int
main(){
double
sum=0,x;
char
a[8];
int
len,i=0;
gets(a);
len=strlen(a);
while(len)
{
if(a[len-1]>='A'&&a[len-1]<='F')
x=(a[len-1]-'7')*pow(16,i++);
else
x=(a[len-1]-'0')*pow(16,i++);
sum+=x;
len--;
}
printf("%.0lf",sum);
return
0;
}4.問(wèn)題描述十六進(jìn)制數(shù)是在程序設(shè)計(jì)時(shí)經(jīng)常要使用到的一種整數(shù)的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個(gè)符號(hào),分別表示十進(jìn)制數(shù)的0至15。十六進(jìn)制的計(jì)數(shù)方法是滿16進(jìn)1,所以十進(jìn)制數(shù)16在十六進(jìn)制中是10,而十進(jìn)制的17在十六進(jìn)制中是11,以此類推,十進(jìn)制的30在十六進(jìn)制中是1E。
給出一個(gè)非負(fù)整數(shù),將它表示成十六進(jìn)制的形式。輸入格式輸入包含一個(gè)非負(fù)整數(shù)a,表示要轉(zhuǎn)換的數(shù)。0<=a<=2147483647輸出格式輸出這個(gè)整數(shù)的16進(jìn)制表示樣例輸入30樣例輸出1E提示:(1)按除16取余倒數(shù)(也可使用格式輸出)。(2)可以使用遞歸來(lái)處理,遞歸參數(shù)為要轉(zhuǎn)換的數(shù)字,如果該數(shù)字大于等于16,則將遞歸處理該數(shù)整除16的值,然后再輸出最后一位。C/C++語(yǔ)言可以使用格式輸出直接輸出轉(zhuǎn)換后的結(jié)果。#include
<stdio.h>#include
<stdlib.h>char
data[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//輸出void
Print(char
*num,int
n){
int
i;
for(i=n-1;i>=0;i--)
printf("%c",num[i]);
printf("\0");
printf("\n");}//將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)int
Transform(char
*num,long
long
value){
int
n=0;
while(value>=16)
{
num[n++]=data[value%16];
value/=16;
}
num[n++]=data[value%16];
return
n;}int
main(){
long
long
value;
char
num[10];
int
n;
scanf("%I64d",&value);
n=Transform(num,value);
Print(num,n);
return
0;}5.問(wèn)題描述123321是一個(gè)非常特殊的數(shù),它從左邊讀和從右邊讀是一樣的。
輸入一個(gè)正整數(shù)n,編程求所有這樣的五位和六位十進(jìn)制數(shù),滿足各位數(shù)字之和等于n。輸入格式輸入一行,包含一個(gè)正整數(shù)n。輸出格式按從小到大的順序輸出滿足條件的整數(shù),每個(gè)整數(shù)占一行。樣例輸入52樣例輸出899998
989989
998899數(shù)據(jù)規(guī)模和約定1<=n<=54。#include<stdio.h>int
main(){
int
a,b,c,d,e,f,n;
long
i;
scanf("%d",&n);
for(i=10000;i<=99999;i++)
{
b=i/10000;
c=i/1000%10;
d=i/100%10;
e=i/10%10;
f=i%10;
if((b==f&&c==e)&&b+c+d+e+f==n)
printf("%ld\n",i);
}
for(i=100000;i<=999999;i++)
{
a=i/100000;
b=i/10000%10;
c=i/1000%10;
d=i/100%10;
e=i/10%10;
f=i%10;
if((a==f&&b==e&&c==d)&&a+b+c+d+e+f==n)
printf("%ld\n",i);
}return
0;}6.問(wèn)題描述1221是一個(gè)非常特殊的數(shù),它從左邊讀和從右邊讀是一樣的,編程求所有這樣的四位十進(jìn)制數(shù)。輸出格式按從小到大的順序輸出滿足條件的四位十進(jìn)制數(shù)。#include<stdio.h>int
main(){
int
a,b,c,d,i;
for(i=1000;i<=9999;i++)
{
a=i/1000;
b=i/100%10;
c=i/10%10;
d=i%10;
if(a==d&&b==c)
printf("%d\n",i);
}return
0;}7.問(wèn)題描述153是一個(gè)非常特殊的數(shù),它等于它的每位數(shù)字的立方和,即153=1*1*1+5*5*5+3*3*3。編程求所有滿足這種條件的三位十進(jìn)制數(shù)。輸出格式按從小到大的順序輸出滿足條件的三位十進(jìn)制數(shù),每個(gè)數(shù)占一行。#include<stdio.h>int
main(){
int
i,j,k,n;
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10%10;
k=n%10;
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%d\n",n);
}return
0;}8.問(wèn)題描述楊輝三角形又稱Pascal三角形,它的第i+1行是(a+b)i的展開式的系數(shù)。它的一個(gè)重要性質(zhì)是:三角形中的每個(gè)數(shù)字等于它兩肩上的數(shù)字相加。下面給出了楊輝三角形的前4行:
1
11
1211331給出n,輸出它的前n行。輸入格式輸入包含一個(gè)數(shù)n。輸出格式輸出楊輝三角形的前n行。每一行從這一行的第一個(gè)數(shù)開始依次輸出,中間使用一個(gè)空格分隔。請(qǐng)不要在前面輸出多余的空格。樣例輸入4樣例輸出1
11
121
1331數(shù)據(jù)規(guī)模與約定1<=n<=34。代碼設(shè)計(jì):#include
<stdio.h>#define
MAXN
40int
n;int
a[MAXN][MAXN];int
main(){
int
i,
j;
scanf("%d",
&n);
a[0][0]
=
1;
for
(i
=
0;
i
<
n;
++i)
{
a[i][0]
=
a[i][i]
=
1;
for
(j
=
1;
j
<
i;
++j)
a[i][j]
=
a[i-1][j-1]
+
a[i-1][j];
}
for
(i
=
0;
i
<
n;
++i)
{
for
(j
=
0;
j
<=
i;
++j)
printf("%d
",
a[i][j]);
printf("\n");
}
return
0;}9.問(wèn)題描述給出一個(gè)包含n個(gè)整數(shù)的數(shù)列,問(wèn)整數(shù)a在數(shù)列中的第一次出現(xiàn)是第幾個(gè)。輸入格式第一行包含一個(gè)整數(shù)n。第二行包含n個(gè)非負(fù)整數(shù),為給定的數(shù)列,數(shù)列中的每個(gè)數(shù)都不大于10000。第三行包含一個(gè)整數(shù)a,為待查找的數(shù)。輸出格式如果a在數(shù)列中出現(xiàn)了,輸出它第一次出現(xiàn)的位置(位置從1開始編號(hào)),否則輸出-1。樣例輸入6
194839
9樣例輸出2數(shù)據(jù)規(guī)模與約定1<=n<=1000。#include
<stdio.h>#define
MAXN
10001int
n,
a,
ans;int
s[MAXN];int
main(){
int
i;
scanf("%d",
&n);
for
(i
=
0;
i
<
n;
++i)
scanf("%d",
&s[i]);
scanf("%d",
&a);
ans
=
-1;
for
(i
=
0;
i
<
n;
++i)
{
if
(s[i]
==
a)
{
ans
=
i
+
1;
break;
}
}
printf("%d",
ans);
return
0;}10.問(wèn)題描述給出n個(gè)數(shù),找出這n個(gè)數(shù)的最大值,最小值,和。輸入格式第一行為整數(shù)n,表示數(shù)的個(gè)數(shù)。第二行有n個(gè)數(shù),為給定的n個(gè)數(shù),每個(gè)數(shù)的絕對(duì)值都小于10000。輸出格式輸出三行,每行一個(gè)整數(shù)。第一行表示這些數(shù)中的最大值,第二行表示這些數(shù)中的最小值,第三行表示這些數(shù)的和。樣例輸入5
13-245樣例輸出5
-2
3數(shù)據(jù)規(guī)模與約定1<=n<=10000。#include
<stdio.h>#include
<stdlib.h>#define
MAXSIZE
10000int
main(){
int
i;
int
n;
int
value;
int
max=-MAXSIZE;
int
min=MAXSIZE;
int
sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&value);
if(value>max)
max=value;
if(value<min)
min=value;
sum+=value;
}
printf("%d\n",max);
printf("%d\n",min);
printf("%d\n",sum);
return
0;}11.問(wèn)題描述利用字母可以組成一些美麗的圖形,下面給出了一個(gè)例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC這是一個(gè)5行7列的圖形,請(qǐng)找出這個(gè)圖形的規(guī)律,并輸出一個(gè)n行m列的圖形。輸入格式輸入一行,包含兩個(gè)整數(shù)n和m,分別表示你要輸出的圖形的行數(shù)的列數(shù)。輸出格式輸出n行,每個(gè)m個(gè)字符,為你的圖形。樣例輸入57樣例輸出ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC數(shù)據(jù)規(guī)模與約定1<=n,m<=26。#include
<stdio.h>#include
<stdlib.h>#define
MAXSIZE
26//輸出void
Print(char
matrix[MAXSIZE][MAXSIZE],int
n,int
m){
int
i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%c",matrix[i][j]);
}
printf("\n");
}}//實(shí)現(xiàn)字母圖形void
Drawing(int
n,int
m){
int
i,j;
int
point=0;
char
str;
char
matrix[MAXSIZE][MAXSIZE];
for(i=0;i<n;i++)
{
str='A';
for(j=i;j<m;j++)
{
matrix[i][j]=str++;
}
str='A';
for(j=i-1;j>=0;j--)
{
matrix[i][j]=++str;
}
}
Print(matrix,n,m);}int
main(){
int
n,m;
scanf("%d%d",&n,&m);
Drawing(n,m);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房買賣合同的定金范本
- 二手房交易補(bǔ)充合同范文
- 中外貿(mào)易合同(DDP條款)條款解析
- 農(nóng)副產(chǎn)品購(gòu)銷合同范本
- 代購(gòu)協(xié)議書范本
- 礦山生態(tài)修復(fù)治理項(xiàng)目合作協(xié)議
- 連鎖酒店經(jīng)營(yíng)承包合同
- 分銷商合同協(xié)議范本
- 農(nóng)業(yè)技術(shù)服務(wù)合同協(xié)議書范本
- 基因檢測(cè)技術(shù)服務(wù)合同
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
- 高數(shù)(大一上)期末試題及答案
- 北方春節(jié)的十大風(fēng)俗
- 婚介公司紅娘管理制度
- 煤礦電氣試驗(yàn)規(guī)程
- JCT796-2013 回彈儀評(píng)定燒結(jié)普通磚強(qiáng)度等級(jí)的方法
- 物業(yè)客服培訓(xùn)課件PPT模板
- 火力發(fā)電廠節(jié)能管理制度實(shí)施細(xì)則
- 2003年版勞動(dòng)合同范本
- 華為攜手深圳國(guó)際會(huì)展中心創(chuàng)建世界一流展館
- 2023版思想道德與法治專題2 領(lǐng)悟人生真諦 把握人生方向 第3講 創(chuàng)造有意義的人生
評(píng)論
0/150
提交評(píng)論