欢迎来到天天文库
浏览记录
ID:60216038
大小:352.00 KB
页数:19页
时间:2020-12-03
《最新NOIP2014普及组复赛试题讲解(c++版本).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NOIP2014普及组复赛题解NOIP2014普及组C++__________________________________________________第1题“珠心算测验”简述某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?直接三重循环穷举外层循环枚举和,两个内层循环分别枚举两个加数,如果有两个数之和对应外层循环的枚举值,退出两个内层循环注意:找到满足等式的必须退出两个内循环。注意看清题意:其中有多少个数,恰好等于集合中另
2、外两个(不同的)数之和。2__________________________________________________参考程序C++#includeusingnamespacestd;intmain(){intn,i,j,k,ans=0;inta[105];cin>>n;for(i=1;i<=n;i++)cin>>a[i];for(i=1;i<=n;i++)//和为A[i]{boolf=false;for(j=1;j3、+;break;}if(f)break;}}cout<4、依然能够较为准确地反映调查结果,同时也显得比较直观。现给出支持人数A,反对人数B,以及一个上限L,请你将A比B化简为A’比B’,要求在A’和B’均不大于L且A’和B’互质(两个整数的最大公约数是1)的前ᨀ下,A’/B’≥A/B且A’/B’-A/B的值尽可能小。4__________________________________________________确定解题思路L很小,还是枚举分别枚举化简之后的A’和B’判断A’/B’>=A/B,避免精度问题,转换成乘法A’*B>=A*B’判断互质,最大公约数为1判断A’和B’最小A’*ansB<=ansA*B’找5、到更小的A’和B’设置为ansA和ansB5__________________________________________________主程序#includeusingnamespacestd;intgcd(intx,inty){intt;t=x%y;if(t==0)returny;elsereturngcd(y,t);}intmain(){inta,b,l,a1,b1,ansa,ansb;cin>>a>>b>>l;ansa=100;ansb=1;for(a1=l;a1>=1;a1--)for(b1=l;b1>=1;b1--){i6、f(a1*b>=a*b1)if(gcd(a1,b1)==1)if(ansa*b1>ansb*a1){ansa=a1;ansb=b1;}}cout<7、螺旋矩阵。下图是一个n=4时的螺旋矩阵。现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。7__________________________________________________确定解题思路思想:剥洋葱皮(分成一个个‘口’)先找出这个点在第几个‘口’中。‘口’的边长就是n-2*c+2。c表示层一个个‘口’,整行整列处理u表示最上行,d表示最下行,l表示最左列,r表示最右列,计算出起始数值,判断目标行、列是否在这个‘口’中,按u-r-d-l的顺序判断。没有找到,目标行、列,则收缩一圈,循环执行8_________________8、__________________________
3、+;break;}if(f)break;}}cout<4、依然能够较为准确地反映调查结果,同时也显得比较直观。现给出支持人数A,反对人数B,以及一个上限L,请你将A比B化简为A’比B’,要求在A’和B’均不大于L且A’和B’互质(两个整数的最大公约数是1)的前ᨀ下,A’/B’≥A/B且A’/B’-A/B的值尽可能小。4__________________________________________________确定解题思路L很小,还是枚举分别枚举化简之后的A’和B’判断A’/B’>=A/B,避免精度问题,转换成乘法A’*B>=A*B’判断互质,最大公约数为1判断A’和B’最小A’*ansB<=ansA*B’找5、到更小的A’和B’设置为ansA和ansB5__________________________________________________主程序#includeusingnamespacestd;intgcd(intx,inty){intt;t=x%y;if(t==0)returny;elsereturngcd(y,t);}intmain(){inta,b,l,a1,b1,ansa,ansb;cin>>a>>b>>l;ansa=100;ansb=1;for(a1=l;a1>=1;a1--)for(b1=l;b1>=1;b1--){i6、f(a1*b>=a*b1)if(gcd(a1,b1)==1)if(ansa*b1>ansb*a1){ansa=a1;ansb=b1;}}cout<7、螺旋矩阵。下图是一个n=4时的螺旋矩阵。现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。7__________________________________________________确定解题思路思想:剥洋葱皮(分成一个个‘口’)先找出这个点在第几个‘口’中。‘口’的边长就是n-2*c+2。c表示层一个个‘口’,整行整列处理u表示最上行,d表示最下行,l表示最左列,r表示最右列,计算出起始数值,判断目标行、列是否在这个‘口’中,按u-r-d-l的顺序判断。没有找到,目标行、列,则收缩一圈,循环执行8_________________8、__________________________
4、依然能够较为准确地反映调查结果,同时也显得比较直观。现给出支持人数A,反对人数B,以及一个上限L,请你将A比B化简为A’比B’,要求在A’和B’均不大于L且A’和B’互质(两个整数的最大公约数是1)的前ᨀ下,A’/B’≥A/B且A’/B’-A/B的值尽可能小。4__________________________________________________确定解题思路L很小,还是枚举分别枚举化简之后的A’和B’判断A’/B’>=A/B,避免精度问题,转换成乘法A’*B>=A*B’判断互质,最大公约数为1判断A’和B’最小A’*ansB<=ansA*B’找
5、到更小的A’和B’设置为ansA和ansB5__________________________________________________主程序#includeusingnamespacestd;intgcd(intx,inty){intt;t=x%y;if(t==0)returny;elsereturngcd(y,t);}intmain(){inta,b,l,a1,b1,ansa,ansb;cin>>a>>b>>l;ansa=100;ansb=1;for(a1=l;a1>=1;a1--)for(b1=l;b1>=1;b1--){i
6、f(a1*b>=a*b1)if(gcd(a1,b1)==1)if(ansa*b1>ansb*a1){ansa=a1;ansb=b1;}}cout<7、螺旋矩阵。下图是一个n=4时的螺旋矩阵。现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。7__________________________________________________确定解题思路思想:剥洋葱皮(分成一个个‘口’)先找出这个点在第几个‘口’中。‘口’的边长就是n-2*c+2。c表示层一个个‘口’,整行整列处理u表示最上行,d表示最下行,l表示最左列,r表示最右列,计算出起始数值,判断目标行、列是否在这个‘口’中,按u-r-d-l的顺序判断。没有找到,目标行、列,则收缩一圈,循环执行8_________________8、__________________________
7、螺旋矩阵。下图是一个n=4时的螺旋矩阵。现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。7__________________________________________________确定解题思路思想:剥洋葱皮(分成一个个‘口’)先找出这个点在第几个‘口’中。‘口’的边长就是n-2*c+2。c表示层一个个‘口’,整行整列处理u表示最上行,d表示最下行,l表示最左列,r表示最右列,计算出起始数值,判断目标行、列是否在这个‘口’中,按u-r-d-l的顺序判断。没有找到,目标行、列,则收缩一圈,循环执行8_________________
8、__________________________
此文档下载收益归作者所有