【用脚趾头解决NOIP】(3)NOIP2010普及组阅读程序写运行结果
2016-09-06 12:26
423 查看
(您的好友【老司机】已上线)
(您的好友【老司机】开启了群飙车,快来啊)
题目源代码:
输入数据:
思路分析:
这道题的整个流程如下:
那么这题就不需要多讲了吧~
本题答案: 2 20 77 91
第二题:回文数
题目源代码:
输入数据:
思路分析:
这道题看上去就觉得不对!
我们仔细观察一下这串代码,然后代一个数进去(我们拿90这个数举栗)
如果根据这个代码走一遍流程,我们会得到…..
该数倒过来的数(如:90倒过来就是09,0被省略)
那么这道题就是判断一个数是否是一个回文数(即正反数一样的数,如11)
那么在90~120以内的回文数总共有三个:
99 , 101 , 111
本题答案: 99,101,111
第三题:最大与次大
题目源代码:
输入数据:
思路描述:
这里我们发现,循环指令正在找一个最大值和次大值,即输入字符串中的ascll最大值和次大值。那么输出最大值和次大值就可以了。
本题答案: 120(‘n’) 112(‘h’)
第四题:是or不是?
题目源代码:
输入数据<1>:
输入数据<2>:
思路描述:
递归代码中,有一句:
我们的操作如下:
1.如果当前用于递归的数<5,则返回这个数。
2.对于每一次的递归,将i从1~5枚举,我们每一次如果都找不到一个数(n-i),使得这个数的返回值为-1,那么就返回-1。如果找到任何一个数,就返回i。
根据上面的操作走一遍,很容易就得出答案。
本题答案:
<1>1
<2>4
(您的好友【老司机】开启了群飙车,快来啊)
NOIP2010
第一题:交换题目源代码:
#include<iostream> using namespace std; void swap(int &a,int &b) { int t; t=a; a=b; b=t; } int main() { int a1,a2,a3,x; cin>>a1>>a2>>a3; if(a1>a2) swap(a1,a2); if(a2>a3) swap(a2,a3); if(a1>a2) swap(a1,a2); cin>>x; if(x<a2) if(x<a1) cout<<x<<' '<<a1<<' '<<a2<<' '<<a3<<endl; else cout<<a1<<' '<<x<<' '<<a2<<' '<<a3<<endl; else if(x<a3) cout<<a1<<' '<<a2<<' '<<x<<' '<<a3<<endl; else cout<<a1<<' '<<a2<<' '<<a3<<' '<<x<<endl; return 0; }
输入数据:
91 2 20 77
思路分析:
这道题的整个流程如下:
那么这题就不需要多讲了吧~
本题答案: 2 20 77 91
第二题:回文数
题目源代码:
#include<iostream> using namespace std; int rSum(int j) { int sum=0; while(j!=0) { sum=sum*10+(j%10); j=j/10; } return sum; } int main() { int n,m,i; cin>>n>>m; for(i=n;i<m;i++) if(i==rSum(i)) cout<<i<<' '; return 0; }
输入数据:
90 120
思路分析:
这道题看上去就觉得不对!
我们仔细观察一下这串代码,然后代一个数进去(我们拿90这个数举栗)
如果根据这个代码走一遍流程,我们会得到…..
该数倒过来的数(如:90倒过来就是09,0被省略)
那么这道题就是判断一个数是否是一个回文数(即正反数一样的数,如11)
那么在90~120以内的回文数总共有三个:
99 , 101 , 111
本题答案: 99,101,111
第三题:最大与次大
题目源代码:
#include<iostream> #include<string> using namespace std; int main() { string s; char m1,m2; int i; getline(cin,s); m1=' '; m2=' '; for(i=0;i<s.length();i++) if(s[i]>m1) { m2=m1; m1=s[i]; } else if(s[i]>m2) m2=s[i]; cout<<int(m1)<<' '<<int(m2)<<endl; return 0; }
输入数据:
Expo 2010 Shanghai China
思路描述:
这里我们发现,循环指令正在找一个最大值和次大值,即输入字符串中的ascll最大值和次大值。那么输出最大值和次大值就可以了。
本题答案: 120(‘n’) 112(‘h’)
第四题:是or不是?
题目源代码:
#include<iostream> using namespace std; const int NUM=5; int r(int n) { int i; if(n<=NUM) return n; for(i=1;i<=NUM;i++) if(r(n-i)<0) return i; return -1; } int main() { int n; cin>>n; cout<<r(n)<<endl; return 0; }
输入数据<1>:
4
输入数据<2>:
16
思路描述:
递归代码中,有一句:
for(i=1;i<=NUM;i++),得到了我们要枚举每一个i。
我们的操作如下:
1.如果当前用于递归的数<5,则返回这个数。
2.对于每一次的递归,将i从1~5枚举,我们每一次如果都找不到一个数(n-i),使得这个数的返回值为-1,那么就返回-1。如果找到任何一个数,就返回i。
根据上面的操作走一遍,很容易就得出答案。
本题答案:
<1>1
<2>4
相关文章推荐
- NOIP 提高组 初赛 四、阅读程序写结果 习题集(七)NOIP2010-NOIP2011
- 【2015自招必备】NOIP普及组阅读程序写结果题目汇编(含答案)
- 【用脚趾头解决NOIP】(2)NOIP2009~NOIP2015年普及组完善程序
- NOIP 提高组 初赛 四、阅读程序写结果 习题集(七)NOIP2010-NOIP2011
- 【用脚趾头解决NOIP】(1):NOIP2010~NOIP2015普及组问题求解
- 在学dwr的时候,在浏览器上运行部署好的程序结果出现“not found”,解决如下
- 解决:eclipse cdt 编写的c/c++程序的运行结果不能输出到console
- Visual Studio2008 和2010 运行程序出现的黑框立即消失解决方法
- 第12周项目1(2)-阅读带有全局变量的程序并输出运行结果
- Visual Studio2008 和2010 运行程序出现的黑框立即消失解决方法
- 阅读程序写出运行结果9
- 第九周实践-阅读程序写出程序运行结果并理解(2)
- -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.【创建键盘监听事件,然后操作键盘(弹出、收回),结果在运行程序时出现如下错误(如有知道解决办法的朋友请留言探讨!)】
- 阅读程序写出运行结果6
- Visual Studio 2010运行CS程序报DragDrop注册失败的解决方法
- 第九周实践-阅读程序,写出程序运行结果并理解(1)
- 第九周实践1---阅读程序,写出程序运行结果并理解
- 阅读程序写出运行结果1
- 阅读程序写出运行结果10
- 阅读程序写出运行结果3