蓝桥杯模拟题加真题

合集下载

(完整)蓝桥杯大赛青少年创意编程Scratch初级组模拟题

(完整)蓝桥杯大赛青少年创意编程Scratch初级组模拟题

.一、单选题(每题 20 分)1 、 (难度系数 1)在舞台添加小猫角色,它的所有设置均为默认设置。

舞台布局和程序运行结果如下图所示。

舞台布局程序运行结果运行以下哪段程序后,可以得到以上结果。

( )A BC D 以上程序都不对2、(难度系数 2) 小猫看到远处好久不见的朋友,于是跳起来说“你好!”想引起朋友的注意,执行以下程序后,小猫说“你好!”一共几秒?( )A 0B 2 C4 D 8.3 、 (难度系数 3)当角色执行完这段程序后,舞台可能出现的图形是?( )A、正三角形B、正四边形C、正六边形D、正八边形4 、 (难度系数 4)执行完这段程序后,变量 b 的值可能是?( )A 、11B 、65C 、130D 、60655、(难度系数 5) 小红想做一个月亮围绕地球旋转的动画,如图,舞台有两个角色:“地球“月球”,并写如下程序,小红希望运行程序后,月球以地球为”中心做圆周运动。

( )A 、 B、B 、 D、1、难度系数 2,满分 50 分准备工作:导入背景库中的“bedroom2”,并导入角色库中的“Abby”“Candy”角色。

编程实现:Abby 打扫完房间,房间停电了, Abby 点上了一根蜡烛。

想象停电后,点上蜡烛的效果。

图1.“关灯以前”图2.“关灯后”1、程序开始运行时,显示如图1.“关灯以前”2 、2 秒以后,背景变暗,屏幕左边的墙上出现比小猫自身还要大的影子,如图2.“关灯后”。

3、之后一直保持图 2 效果4、蜡烛、 Abby 、影子之间和大小应大致正确。

将程序保存在桌面,命名为“ 1.sb2”评判标准:10 分:程序运行后,按图 1 的效果显示并保持至少 2 秒钟;30 分:在 10 分的基础上,能按图 2 的要求背景变暗,出现 Abby 阴影;50 分:在 30 分的基础上,背景中的圣诞树仍可见,蜡烛、 Abby、影子之间的位置关系基本正确, Abby 和影子的大小关系符号逻辑。

蓝桥杯java模拟赛试题及答案

蓝桥杯java模拟赛试题及答案

蓝桥杯java模拟赛试题及答案蓝桥杯Java模拟赛试题及答案一、选择题(每题2分,共20分)1. Java中,下列哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 在Java中,哪个关键字用于定义一个方法?A. functionB. methodC. procedureD. action答案:B3. 下列哪个是Java中的合法标识符?A. 2variableB. variable2C. variable#2D. variable!答案:B4. Java中,哪个关键字用于实现接口?A. implementsB. extendsC. includesD. contains答案:A5. 在Java中,哪个关键字用于定义一个包?A. packageB. groupC. bundleD. container答案:A6. Java中,下列哪个是正确的数组声明方式?A. int[] array;B. array int[];C. int array[];D. array[] int;答案:A7. 在Java中,哪个关键字用于定义一个构造方法?A. constructorB. initializerC. setupD. method答案:D8. Java中,哪个关键字用于实现多态?A. overrideB. extendsC. implementsD. abstract答案:A9. 下列哪个是Java中的引用数据类型?A. intB. charC. StringD. boolean答案:C10. 在Java中,哪个关键字用于抛出异常?A. throwB. throwsC. exceptionD. error答案:B二、简答题(每题10分,共20分)1. 简述Java中异常处理的机制。

答案:Java中的异常处理机制主要通过try、catch、finally和throw关键字来实现。

大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案

大学生蓝桥杯试题及答案一、选择题(每题2分,共20分)1. 在计算机科学中,通常用什么来表示一个算法的效率?A. 时间复杂度B. 空间复杂度C. 算法的可读性D. 算法的可维护性答案:A2. 下列哪种数据结构在插入和删除操作时不需要移动其他元素?A. 链表B. 数组C. 栈D. 队列答案:A3. 以下哪个选项是面向对象编程的三个基本特征?A. 封装、继承、多态B. 抽象、封装、继承C. 继承、封装、多态D. 封装、继承、抽象答案:A4. 在HTML中,用于定义最重要的标题的标签是什么?A. <h1>B. <h6>C. <title>D. <header>答案:A5. 在数据库管理系统中,用于从数据库中检索数据的SQL语句是?A. INSERTB. UPDATEC. DELETED. SELECT答案:D6. 在Java中,用于定义一个类的方法的关键字是什么?A. classB. methodC. functionD. public答案:D7. 在C语言中,用于声明一个变量为静态存储的关键字是什么?A. staticB. externC. registerD. auto答案:A8. 在Python中,用于定义一个函数的关键字是什么?A. defB. functionC. methodD. class答案:A9. 在操作系统中,用于管理进程的调度和资源分配的组件是什么?A. 文件系统B. 内存管理C. 进程管理器D. 设备驱动程序答案:C10. 以下哪个协议是用于在互联网上发送电子邮件的?A. HTTPB. FTPC. SMTPD. TCP答案:C二、填空题(每题2分,共20分)1. 在计算机科学中,________是用来衡量算法在最坏情况下执行时间的量度。

答案:时间复杂度2. 在数据结构中,________是一种允许在任意位置插入和删除数据的线性数据结构。

蓝桥杯python题库及答案

蓝桥杯python题库及答案

蓝桥杯python题库及答案蓝桥杯python题库及答案一、选择题第一题设s=“Hello Lan Qiao”,执行print(s[4:11])输出的结果为( )。

选择题严禁使用程序验证A、lo Lan QiB、lo Lan QC、o Lan QiD、o Lan Q第二题循环语句for i in range(8, -4, -2):执行了几次循环( )。

选择题严禁使用程序验证A、4B、5C、6D、7第三题导入random模块后,执行print(random.randrange(10,100,2))语句,输出的结果可能是( )。

选择题严禁使用程序验证A、1B、24C、63D、100第四题执行以下程序,输出的结果是( )。

选择题严禁使用程序验证height = {“小蓝”:80, “小青”:100, “小圃”:70}height[“小青”]=70print(sum(height.values()))A、220B、210C、250D、70第五题导入turtle模块后,执行turtle.circle(80,steps=6)语句,所绘制的图形以下说法正确的是( )。

选择题严禁使用程序验证A、绘制出一个半径为80像素的圆B、绘制出六个半径为80像素的圆C、绘制出一个半径为80像素的圆和一个六边形D、绘制出一个半径为80像素的圆内接正六边形二、编程题第一题(注:input()输入函数的括号中不允许添加任何信息)编程实现:给定一个正整数N,计算N除以7的商。

输入描述:输入一个正整数N输出描述:输出N除以7的商(商为整数)样例输入:8样例输出:1num = int(input())print(num % 7)第二题(注:input()输入函数的括号中不允许添加任何信息)编程实现:给定一个正整数N,计算出1到N之间所有奇数的和。

输入描述:输入一个正整数N输出描述:输出1到N之间(包含1和N)所有奇数的和样例输入:5样例输出:9N = int(input())Sum = 0for i in range(1, N+1,2):Sum += iprint(Sum)第三题(注:input()输入函数的括号中不允许添加任何信息)提示信息:“水仙花数”是指一个三位正整数,其各位数字立方的和等于该数本身。

蓝桥杯试题及答案

蓝桥杯试题及答案

蓝桥杯试题及答案一、选择题1. 在Java中,以下哪个关键字用于定义类?A. classB. interfaceC. enumD. struct答案:A2. 下列哪个不是Python的内置数据类型?A. intB. floatC. stringD. list答案:D二、填空题1. 在C语言中,定义一个整型变量的关键字是________。

答案:int2. 在JavaScript中,用于定义函数的关键字是________。

答案:function三、简答题1. 请简述什么是算法的时间复杂度,并给出一个例子。

答案:算法的时间复杂度是指算法执行时间随输入规模增长的变化趋势。

例如,对于一个简单的线性搜索算法,如果数组中有n个元素,最坏情况下需要比较n次,因此其时间复杂度是O(n)。

2. 请解释什么是栈,并给出一个栈的应用场景。

答案:栈是一种后进先出(LIFO)的数据结构,允许在一端进行数据的添加和删除操作。

一个常见的栈的应用场景是函数调用的实现,在编程中,每当调用一个函数,就会将函数的返回地址和局部变量压入栈中,待函数执行完毕后再从栈中弹出。

四、编程题1. 编写一个函数,实现对一个整数数组进行排序。

答案:```javapublic static void sort(int[] array) {for (int i = 0; i < array.length - 1; i++) {for (int j = 0; j < array.length - i - 1; j++) {if (array[j] > array[j + 1]) {int temp = array[j];array[j] = array[j + 1];array[j + 1] = temp;}}}}```2. 编写一个程序,实现计算一个字符串中所有元音字母的数量。

答案:```pythondef count_vowels(s):vowels = "aeiouAEIOU"return sum(1 for char in s if char in vowels)# 示例print(count_vowels("Hello World")) # 输出应该是 3```五、案例分析题1. 描述一个场景,其中使用二叉搜索树(BST)比使用数组更有效,并解释原因。

第三届蓝桥杯预赛真题及详细答案

第三届蓝桥杯预赛真题及详细答案
{
int sum = 0;
for(int i=0; i<6; i++)if(x[i][c]) sum++;
return sum;
}
void show(int x[][6])
{
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++) printf("%2d", x[i][j]);
如图【1.jpg】表示了分块乘法的原理。可以把大数分成多段(此处为2段)小数,然后用小数的多次运算组合表示一个大数。可以根据int的承载能力规定小块的大小,比如要把int分成2段,则小块可取10000为上限值。注意,小块在进行纵向累加后,需要进行进位校正。
以下代码示意了分块乘法的原理(乘数、被乘数都分为2段)。
printf("\n");
}
printf("\n");
}
void f(int x[][6], int r, int c);
void GoNext(int x[][6], int r, int c)
{
if(c<6)
_______________________; //填空
else
f(x, r+1, 0);
f(a,n+1);
i-- ;
}
}
void main(){
int a[3]={0};
for(int i=4;i<=20;i++){
a[0] = i ;
f(a,1);
}
}
四、奇怪的比赛
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:

蓝桥杯备考真题演练(6套含答案)

蓝桥杯备考真题演练(6套含答案)

蓝桥杯备考真题演练(一)执行如下图所示的程序框图,输出的x的值是()。

A.3B.5C.6D.7根据下面流程图回答下列问题。

(1)若输入1,则输出的数为;(2)若输入123,则输出的数为;(3)若输出的数为123,则输入的数或。

2022年起蓝桥杯参赛项目增加“计算思维”,适合小学1-6学段学员参加成绩前10%进入国赛,10%-60%进入省赛执行如下图所示的流程图,输出a的值是()。

A.15B.16C.17D.18蓝桥杯备考真题演练(二)请根据前三个图形中颜色的规律,最后一个图形的右上角最适合的颜色是()A.绿色B.黄色C.蓝色D.黑色如下图,琦琦有一个花瓣风车,如果琦琦逆时针转小动物们在玩换座位的游戏。

开始时,企鹅、鳄鱼、猫头鹰、狐狸分别坐在如下图(左)所示的位置。

第1次换座位,上下的动物互换;第2次换座位,左右的动物互换;第3次上下互换;第4次左右互换;……按照此规律进行下去,第95次换座位后,企鹅坐在什么位置?()A. B. C. D.有两个没有刻度,容积分别为6升和8升的上下径不同的大杯子,和无限多的水,至少倒水次才能量出4升水。

(最初两个杯子都是空的)有2个砝码,分别重6g 和9g,使用这2个砝码在天平上称12g 茶叶,最少称几次?()A.1B.2C.3D.4蓝桥杯备考真题演练(三)有16个外观相同的球,其中有一个次品,次品比其他球轻,其它球的重量相等。

用一个没有砝码的天平,至少称重几次才能保证找到次品?()A.2B.3C.4D.5从红、黄、蓝三种颜色中至少选取一种颜色,有多少种不同的选法?()A.3B.6C.7D.10皮皮买了一些小彩旗,有红、绿、蓝3种颜色,皮皮准备用它们装饰旅行社。

旅行社门前需要挂4面彩旗,皮皮希望相邻的彩旗颜色不相同,有种不同的方法。

蓝桥杯备考真题演练(四)小维忘记了密码锁的密码,只记得密码是四位,密码里肯定有数字1和2,没有其他数字。

他最少要试多少次,才能保证打开锁?()A.12B.14C.16D.18松鼠王国里诞生了一名松鼠宝宝,松鼠妈妈要按照松鼠王国的起名规则来给他起名。

蓝桥杯试题(真题)训练

蓝桥杯试题(真题)训练

蓝桥杯试题(真题)训练1. 运算符难度:5颗星c语⾔的compare函数⽐较两字符串⼤⼩1//使⽤c语⾔的compare函数⽐较两字符串⼤⼩返回值为-1,0,12string s1 = "asd",s2 = "asd";3int t = pare(s2);//逐个⽐较字母,若t=-1,说明 s1<s2 ; 若t=1,说明 s1>s2 ; 若t=0,说明 s1=s2 ;4 cout<<t<<endl;思路:使⽤两个函数:toNumber(string s,int c)、toString(long long n,int c)对于toNumber(string s,int c)函数作⽤:将c进制的s2字符串转为10进制的数字对于toString(long long n,int c)函数作⽤:将10进制的n数字转为c进制的字符串对于该题,我们运算中的数字都转为10进制去运算,所以我们的数字平时都以10进制保存(输⼊s2之后,使⽤toNumber(s2,c)转为10进制)当我们需要输出答案时,再将运算结果⽤c进制输出(toString(res,c))代码:注明:易错点都已在源代码中标出。

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;//将c进制的s字符串转换为10进制的数字long long toNumber(string s,int c){ //第四处:返回数据应为long long型int len = s.length();long long n = 0;for(int i = 0;i<len;i++){if(s[i] >= 'A') n = (s[i]-'A'+10) + n*c;else n = (s[i]-'0') + n*c;}return n;}//将10进制的数字n转换为c进制的字符串sstring toString(long long n,int c){string s;if(n == 0) return"0"; //第⼀处:忘记考虑n=0的情况while(n){long long t = n%c; //第⼆处:t的数据范围错误写成intif(t>=10) s.push_back(t-10+'A');else s.push_back(t+'0');n/=c;}reverse(s.begin(),s.end());return s;}int main(){//n表⽰操作数,c表⽰当前进制单位,isclear标记前⾯的数是否被清除//p表⽰操作符序号int n,c=10,isclear = 1,p=0;cin>>n;//s1表⽰操作,s2表⽰数字string s1,s2;long long res,num;while(n--){cin>>s1;if(!pare("NUM")){cin>>s2;if(isclear){//说明前⾯的数已经被清除res = toNumber(s2,c);//说明s2为c进制的数,将s2转为10进制的数字isclear = 0; //第六处:记得将isclear的值设为0}else{ //说明前⾯有数num = toNumber(s2,c);if(p==1) res+=num;else if(p==2) res-=num;else if(p==3) res*=num;else if(p==4) res/=num;else if(p==5) res%=num;p=0; //第7处:记得将p的值设为0}}else if(!pare("ADD")){p=1;}else if(!pare("SUB")){p=2;}else if(!pare("MUL")){p=3;}else if(!pare("DIV")){p=4;}else if(!pare("MOD")){p=5;}else if(!pare("CHANGE")){cin>>c;}else if(!pare("EQUAL")){ //平时计算都以10进制,输出将res化为c进制cout<<toString(res,c)<<endl; //第三处:输出没加换⾏}else if(!pare("CLEAR")){//表⽰将前⾯的数清除isclear = 1; //第五处:总容易误写成将isclear=1写成c=1,导致样例输出结果为40 }}return0;}2. 求“连通块数⽬”题tarjan算法或者并查集需复习并查集解法:#include<iostream>#include<cstdio>#include<algorithm>using namespace std;//并查集算法 find and union函数#define maxn 1000010int pre[maxn];int m,n,k,cnt;void Init(){for(int i = 1;i<=m*n;i++){pre[i]=i;}cnt = m*n; //cnt表⽰刚开始的根节点数⽬}int myFind(int a){if(a == pre[a]) return a;else return pre[a]=myFind(pre[a]);}void myunion(int a,int b){int aroot = myFind(a);int broot = myFind(b);if(aroot != broot){pre[broot] = aroot;//易错点:需注意,不要写成pre[b]=a;cnt--;}}int main(){cin>>m>>n;Init();cin>>k;while(k--){int a,b;cin>>a>>b;myunion(a,b);}cout<<cnt<<endl;}3. 回溯搜索每次可以进⾏两种操作:新建考场或者某⼀个之前的考场需复习1 #include<iostream>2 #include<cstdio>3 #include<algorithm>4using namespace std;56#define maxn 1057int n,m,ans=99999;8int f[maxn][maxn]={0};9int a[maxn]={0};//a[i]存第i个⼈所在的考场1011bool Judge(int x,int room){ //判断第x个⼈是否能使⽤第room个考场12for(int i=1;i<=n;i++){13if((f[x][i]==1)&&(a[i]==room)){ //说明该考场存在与x有关系的⼈14return false;15 }16 }17return true;18}1920void solve(int x,int room_num){21if(room_num>=ans){ //剪枝注意:我这⾥如果少了=,评测机会判断超时...22return;23 }24if(x>n){ //说明安排考场任务结束25 ans=min(ans,room_num);26return;27 }28//判断是否可以使⽤之前的某个考场29for(int i=1;i<=room_num;i++){30if(Judge(x,i)==true){31 a[x]=i;32 solve(x+1,room_num);33 a[x]=0;34 }35 }36//前⾯那些考场⽆法使⽤,需新建考场37 a[x]=room_num+1;38 solve(x+1,room_num+1);39 a[x]=0;40}4142int main(){43int x,y;44 cin>>n>>m;45while(m--){46 cin>>x>>y;47 f[x][y]=f[y][x]=1;48 }4950 solve(1,0);51 cout<<ans<<endl;52 }4.⼩数第n位思维题:模拟除法需复习注意:我们需判断是否需要对代码进⾏优化,不优化是否会超数据范围,超时之类的...很明显,该题需进⾏优化,对数据逼近防⽌超时---------易错点:注意变量的数据类型,int与long long的区别#include <iostream>using namespace std;int main(){long long i,a,b,n;cin>>a>>b>>n;a=a%b;//若n过⼤,加⼀个while快速逼近⼩数点后第n位的位置while(n>10){a*=1e10;n-=10;a%=b;}for(i=1;i<=n+2;i++) //注意:i的数据类型{a*=10;if(i>=n){cout<<a/b;}a%=b;}return0;}⼆分查找⽅法:这个要记住背诵binary_search(a,a+N,t)==true//表明在数组a中存在t这个数字下标=lower_bound(a,a+N,t)-a;//得到>=t这个数的下标5.对局匹配需复习算法思想:动态规划求:最多可以存在多少名(任意两名⽤户积分差不等于K)我们对⽤户的积分进⾏整理(对k取余,余数相同的积分在同⼀分组):0,0+k,0+2k...1,1+k,1+2k...2,2+k,2+2k...只有在同⼀个分组的⽤户才可能积分差等于K所以我们先求出每⼀个分组的最多可存在⽤户⼈数最后总和分组得到答案对每⼀个分组进⾏状态转移⽅程:f[j]=max(f[j-1],f[j-2]+num[j]);f[j]:表⽰ [该分组] 到第i个元素的最⼤⽤户⼈数对于积分i我们选或者不选完全取决于它的⽤户个数,⽽如果选积分i,那么积分i-k与积分i+k是不可选的,⽽如果不选积分i,那么积分i-k与积分i+k是可选的,所以:num[i]=max(num[i-k],num[i]+num[i+k])1 #include<iostream>2 #include<algorithm>3using namespace std;4#define maxn 1000015int n,k,ans;6//hsh[i]表⽰积分为i的⽤户⼈数7//下⾯两个数组每在⼀个分组中就重新赋值; 同⼀分组的余数t相同:t,k+t,2*k+t,3*k+t...8//num[i]存该分组的第i个元素的⽤户⼈数9//f[i]存该分组到第i个元素的最⼤⽤户⼈数 , 最⼤⽤户⼈数的关系:a,a+k,a+2*k , max(num[a]+num[a+2*k],num[a+k])10int hsh[maxn]={0},num[maxn]={0},f[maxn]={0};11int main(){12 cin>>n>>k;13 ans=0;14int t,i,j;15for(i=0;i<n;i++){16 cin>>t;17 hsh[t]++;18 }19if(k==0){//重复积分只取⼀个20for(i=1;i<maxn;i++){21if(hsh[i]!=0){22 ans++;23 }24 }25 }26else{27for(i=0;i<k;i++){//k个分组28int m=1;29for(j=i;j<maxn;j+=k){ //j为该分组的积分值,范围在(i,maxn)30 num[m++]=hsh[j];//hsh[j]为积分值为j时的⽤户⼈数31 }32 f[1]=num[1];33for(j=2;j<=m;j++){ //注意:这⾥的j⼀定要从2开始,否则下⾯的j-2会下标越界34 f[j]=max(f[j-1],f[j-2]+num[j]);35 }36 ans+=f[m];37 }38 }39 cout<<ans<<endl;40return0;41 }2.递推写法#include<iostream>#include<algorithm>using namespace std;#define maxn 100001int has[maxn]={0},d[maxn]={0};int main(){int n,k;cin>>n>>k;for(int i=0;i<n;i++){int x;cin>>x;has[x]++;}int ans=0;if(k==0){for(int i = 1; i < maxn; i++)ans += (bool)has[i];}else{for(int i=0;i<k;i++){//k个分组int sum=0;d[i]=has[i],d[i+k]=has[i+k];for(int j=i+2*k;j<maxn;j+=k){d[j]=max(d[j-k],d[j-2*k]+has[j]);//递推关系式sum=max(d[j],sum);}ans+=sum;}}cout<<ans<<endl;return0;}View Code6.发现环并查集+dfs思路:并查集找到环上的某点之后,进⾏递归求该环上的所有点代码:#include <cstdio>#include<iostream>#include <algorithm>#include<vector>using namespace std;const int maxn = 100001;int n;int f[maxn],flag,vis[maxn]={0};vector<int> g[maxn],ans;int Find(int x){return f[x]==x?x:f[x]=Find(f[x]);}bool dfs(int x){if(vis[x]){if(x==flag){ //说明递归结束return true;}else{ //说明回溯到前⾯经过的某节点return false;}}vis[x]=1;for(int i=0;i<g[x].size();i++){if(dfs(g[x][i])){ans.push_back(g[x][i]);return true;}}return false;}int main(){cin>>n;int x,y;//并查集⼀定要记得初始化for(int i=0;i<n;i++) f[i]=i;for(int i=0;i<n;i++){cin>>x>>y;g[x].push_back(y);g[y].push_back(x);int rootx=Find(x), rooty=Find(y);//并查集找到环的某点if(rootx!=rooty){f[rootx]=rooty;}else{//两个祖宗节点相同,说明是环节点flag=x;dfs(x);//找到环上的点后进⾏递归}}sort(ans.begin(),ans.end());for(int i=0;i<ans.size();i++)cout<<ans[i]<<"";return0;}7. 简单题#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define maxn 1001int main(){char a[maxn],b[maxn];scanf("%s%s",&a,&b);int len=strlen(a),cnt=0;for(int i=0;i<len;i++){if(a[i]==b[i]) continue;else{ //遍历过去,发现两个字符不相等的话,操作加⼀,把后⾯字符b[i+1]反转即可 cnt++;if(b[i+1]=='o') b[i+1]='*';else b[i+1]='o';}}cout<<cnt<<endl;return0;}7.错误票据简单题读题+简单哈希#include<iostream>using namespace std;#define maxn 100001int has[maxn]={0};int main(){int n,x;cin>>n;int A=maxn,B=0;for(int i=0;i<n;i++){while(cin>>x){has[x]++;if(x<A) A=x;if(x>B) B=x;char ch = getchar();if(ch=='\n') break;}}int d,c;//从题意可知,只有⼀个断数和重复数,总的数⽬为B-A+1个数字for(int i=A;i<=B;i++){if(has[i]==2) c=i;//hash值为2.说明这个数有重复if(has[i]==0) d=i;//hash值为0.说明这个数没有输⼊过}cout<<d<<""<<c<<endl;return0;}-------------------continue--------------------。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Fibonacci数列的递推公式为:F n=F n-1+F n-2,其中F1=F2=1。

当n比较大时,F n也非常大,现在我们想知道,F n除以10007的余数是多少。

输入格式输入包含一个整数n。

输出格式输出一行,包含一个整数,表示F n除以10007的余数。

说明:在本题中,答案是要求F n除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出F n的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。

样例输入10样例输出55样例输入22样例输出7704数据规模与约定1 <= n <= 1,000,0001.#include <stdlib.h>2.#include <stdio.h>3.#define MOD 100074.#define MAXN 10000015.int n, i, F[MAXN];6.int main()7.{8.scanf("%d", &n);9.F[1] = 1;10.F[2] = 1;11.for (i = 3; i <= n; ++i)12.F[i] = (F[i-1] + F[i-2]) % MOD;13.printf("%d\n", F[n]);14.return 0;15.}2、问题描述给定圆的半径r,求圆的面积。

输入格式输入包含一个整数r,表示圆的半径。

输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。

说明:在本题中,输入是一个整数,但是输出是一个实数。

对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误。

实数输出的问题如果没有特别说明,舍入都是按四舍五入进行。

样例输入4样例输出50.2654825数据规模与约定1 <= r <= 10000。

提示本题对精度要求较高,请注意π的值应该取较精确的值。

你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1.0)*4。

1.#include <stdio.h>2.#include <math.h>3.4.int main()5.{6.int r;7.double s, PI;8.scanf("%d", &r);9.PI = atan(1.0) * 4;10.s = PI * r * r;11.printf("%.7lf", s);12.return 0;13.}3、问题描述求1+2+3+...+n的值。

输入格式输入包括一个整数n。

输出格式输出一行,包括一个整数,表示1+2+3+...+n的值。

样例输入4样例输出10样例输入100说明:有一些试题会给出多组样例输入输出以帮助你更好的做题。

一般在提交之前所有这些样例都需要测试通过才行,但这不代表这几组样例数据都正确了你的程序就是完全正确的,潜在的错误可能仍然导致你的得分较低。

样例输出5050数据规模与约定1 <= n <= 1,000,000,000。

说明:请注意这里的数据规模。

本题直接的想法是直接使用一个循环来累加,然而,当数据规模很大时,这种“暴力”的方法往往会导致超时。

此时你需要想想其他方法。

你可以试一试,如果使用1000000000作为你的程序的输入,你的程序是不是能在规定的上面规定的时限内运行出来。

本题另一个要值得注意的地方是答案的大小不在你的语言默认的整型(int)范围内,如果使用整型来保存结果,会导致结果错误。

如果你使用C++或C语言而且准备使用printf输出结果,则你的格式字符串应该写成%I64d以输出long long类型的整数。

1.#include <stdio.h>2.int main()3.{4.int n;5.long long ret = 0, tmp;6.scanf("%d", &n);7.tmp = n;8.printf("%I64d", (1+tmp) * tmp / 2);9.return 0;10.}4、问题描述输入A、B,输出A+B。

说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标。

输入格式输入的第一行包括两个整数,由空格分隔,分别表示A、B。

说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式。

做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查。

多余的格式检查可能会适得其反,使用你的程序错误。

在测试的时候,系统会自动将输入数据输入到你的程序中,你不能给任何提示。

比如,你在输入的时候提示“请输入A、B”之类的话是不需要的,这些多余的输出会使得你的程序被判定为错误。

输出格式输出一行,包括一个整数,表示A+B的值。

说明:“输出格式”是要求你的程序在输出结果的时候必须满足的格式。

在输出时,你的程序必须满足这个格式的要求,不能少任何内容,也不能多任何内容。

如果你的内容和输出格式要求的不一样,你的程序会被判断为错误,包括你输出了提示信息、中间调试信息、计时或者统计的信息等。

样例输入12 45说明:“样例输入”给出了一组满足“输入格式”要求的输入的例子。

这里给出的输入只是可能用来测试你的程序的一个输入,在测试的时候,还会有更多的输入用来测试你的程序。

样例输出57说明:“样例输出”给出了一组满足“输出格式”要求的输出的例子。

样例输出中的结果是和样例输入中的是对应的,因此,你可以使用样例的输入输出简单的检查你的程序。

要特别指出的是,能够通过样例输入输出的程序并不一定是正确的程序,在测试的时候,会用很多组数据进行测试,而不局限于样例数据。

有可能一个程序通过了样例数据,但测试的时候仍只能得0分,可能因为这个程序只在一些类似样例的特例中正确,而不具有通用性,再测试更多数据时会出现错误。

比如,对于本题,如果你写一个程序不管输入是什么都输入57,则样例数据是对的,但是测试其他数据,哪怕输入是1和2,这个程序也输出57,则对于其他数据这个程序都不正确。

数据规模与约定-10000 <= A, B <= 10000。

说明:“数据规模与约定”中给出了试题中主要参数的范围。

这个范围对于解题非常重要,不同的数据范围会导致试题需要使用不同的解法来解决。

比如本题中给的A、B范围不大,可以使用整型(int)来保存,如果范围更大,超过int的范围,则要考虑其他方法来保存大数。

有一些范围在方便的时候是在“问题描述”中直接给的,所以在做题时不仅要看这个范围,还要注意问题描述。

提示本题的C++源代码如下:1.#include <iostream>2.ing namespace std;4.5.int main()6.{7. int a, b;8. cin >> a >> b;9. cout << a + b;10. return 0;11.}本题的C源代码如下:1.#include <stdio.h>2.3.int main()4.{5. int a, b;6. scanf("%d%d", &a, &b);7. printf("%d", a+b);8. return 0;9.}本题的Java源代码如下:1.import java.util.*;2.3.public class Main4.{5. public static void main(String args[])6. {7. Scanner sc = new Scanner(System.in);8. Integer a = sc.nextInt();9. Integer b = sc.nextInt();10. System.out.println(a + b);11. }12.}说明:要答题,请点击页面上方的“提交此题”按钮,页面将跳转到提交代码的页面,选择好你的编译语言,将你的编写好的代码粘贴到代码框中,再点击“提交答案”即可。

你的答案提交给系统后系统会自动对你的代码进行判分,并跳转到结果的列表里面,你可以直接从列表中看到你提交的代码的状态,一般几秒钟后就可以看到判分的结果。

本题作为第一题,在提示中已经分别给了C++和Java的代码,你可以直接把这个代码拷贝过去作为自己的代码提交。

请特别注意,Java的主类名必须是Main。

5、问题描述给定一个长度为n的数列,将这个数列按从小到大的顺序排列。

1<=n<=200输入格式第一行为一个整数n。

第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。

输出格式输出一行,按从小到大的顺序输出排序后的数列。

样例输入58 3 6 4 9样例输出3 4 6 8 91.#include <stdio.h>2.#include <stdlib.h>3.void Print(int *data,int n)4.{5.int i;6.for(i=0;i<n;i++)7.{8.printf("%d ",data[i]);9.}10.printf("\n");11.}12.13.int Split(int *data,int pre,int rear)14.{15.int value=data[pre];16.while(pre<rear)17.{18.while(data[rear]>=value && pre<rear) rear--;19.data[pre]=data[rear];20.while(data[pre]<value && pre<rear) pre++;21.data[rear]=data[pre];22.}23.data[pre]=value;24.return pre;25.}26.27.//快速排序28.void QuickSort(int *data,int pre,int rear)29.{30.if(pre<rear)31.{32.int mid=Split(data,pre,rear);33.QuickSort(data,pre,mid-1);34.QuickSort(data,mid+1,rear);35.}36.}37.38.int main()39.{40.int i;41.int n;42.int *data;43.scanf("%d",&n);44.data=(int *)malloc(sizeof(int)*n);45.for(i=0;i<n;i++)46.{47.scanf("%d",&data[i]);48.}49.QuickSort(data,0,n-1);50.Print(data,n);51.return 0;52.}6、问题描述123321是一个非常特殊的数,它从左边读和从右边读是一样的。

相关文档
最新文档