第1题:星系炸弹(2015年省赛C/C++B组第2题)在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。
比如:2015-02-19请严格按照格式书写。
不能出现其它文字或符号。
•结果:2017-08-05•解决方法:用Excel拖这个题会了的同学们把上课讲过的,课件上的,其他几道Excel拖动题都做一遍。
第2题:(2015年校内选拔赛C/C++B组第3题)如果x的x次幂结果为10(参见【图1.png】),你能计算出x的近似值吗?显然,这个值是介于2和3之间的一个数字。
请把x的值计算到小数后6位(四舍五入),并填写这个小数值。
注意:只填写一个小数,不要写任何多余的符号或说明。
#include <iostream>#include <cmath>#include <iomanip>using namespace std;int main(){double x;for(x=2;x<=3;x+=1e-7){if (abs(pow(x,x)-10)<1e-6)cout<<fixed<<setprecision(6)<<x;}return 0;}答案:2.506184其他类似题:ALGO-23一元三次方程求解第3题(全排列)注意:全排列必考!全排列必考!全排列必考!重要的事要说三遍!李白打酒(2014年省赛本科B组第3题)话说大诗人李白,一生好饮。
幸好他从不开车。
一天,他提着酒壶,从家里出来,酒壶中有酒2斗。
他边走边唱:无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。
请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。
则:babaabbabbabbbb 就是合理的次序。
像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。
答案:14解法1:next_permutation的解法#include<iostream>#include<algorithm>using namespace std;int main(){int p[15]={1,1,1,1,1,2,2,2,2,2,2,2,2,2,2};//1是店,2是花int sum,cnt=0;do{sum=2;for(int i=0;i<15;i++)if(p[i]==1)sum<<=1;else if(p[i]==2)sum--;if(sum==0) cnt++;}while(next_permutation(p,p+14));//因为最后一次遇到的肯定是花,所以只排前14个数,不排最后一个cout<<cnt;return 0;}解法2:交换大法解法#include <iostream>using namespace std;#define N 14//因为最后一次肯定是花,所以只排14个数int cnt;bool ok(int p[],int begin,int end){for (int i = begin; i < end; i++)if (p[i] == p[end])return false;return true;}void perms(int p[],int start){int i;if(start==N-1){int sum=2;for(i=0;i<N;i++)if(p[i]==1)sum<<=1;else if(p[i]==2)sum--;if(sum==1) cnt++;//倒数第2次,剩1斗酒return;}for(i=start;i<N;i++){if (ok(p, start, i)){swap(p[start],p[i]);perms(p,start+1);swap(p[start],p[i]);}}}int main(){int p[]={1,1,1,1,1,2,2,2,2,2,2,2,2,2};//1是店,2是花perms(p,0);cout<<cnt;return 0;}解法3:字符串全排列的解法#include<iostream>#include<algorithm>using namespace std;int main(){string s = "aaaaabbbbbbbbb";//a是店,b是花int sum,cnt=0;do{sum=2;for(int i=0;i<15;i++)if(s[i]=='a')sum<<=1;else if(s[i]=='b')sum--;if(sum==1) cnt++;}while(next_permutation(s.begin(),s.end()));cout<<cnt;return 0;}解法4:递归解法#include<iostream>using namespace std;int cnt=0;void f(int a,int b,int c)//a个店,b朵花,c升酒{if(a>5||b>9) return;f(a+1,b,c*2);f(a,b+1,c-1);if(a==5&&b==9&&c==1)cnt++;}int main(){f(0,0,2);cout<<cnt<<endl;}第4题(逻辑推理题)练习系统ADV-143 扶老奶奶过街•一共有5个红领巾,编号分别为A、B、C、D、E,老奶奶被他们其中一个扶过了马路。
五个红领巾各自说话:A :我和E都没有扶老奶奶B :老奶奶是被C和E其中一个扶过大街的C :老奶奶是被我和D其中一个扶过大街的D :B和C都没有扶老奶奶过街E :我没有扶老奶奶已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街?若有多个答案,在一行中输出,编号之间用空格隔开例如A B C D E(这显然不是正确答案)解法1--位运算#include <iostream>using namespace std;#define N 5int main(){int i,j,t,a[N];for (i = 0x10; i >0; i>>=1){t=i;for (j = N-1; j >= 0; j--){a[j] = t & 1;t>>=1;}//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (j = 0; j < N; j++){if(a[j]) cout<<char('A'+j)<<' ';}}}return 0;}解法2-全排列#include<iostream>#include<algorithm>using namespace std;#define N 5int main(){int a[N]={1,0,0,0,0};//1扶了。
0没扶。
do{//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (int i = 0; i < N; i++){if(a[i]) cout<<char('A'+i)<<' ';}}}while(prev_permutation(a,a+N));return 0;}解法3-递归(大材小用了)#include<iostream>using namespace std;#define N 5int a[N];//1扶了。
0没扶。
void f(int k){int i;if(k==N){int sum=0;for(i=0;i<N;i++)sum+=a[i];if(sum==1)//只有一个人扶了{//ABCDE5个变量存5个人的真假话状态,1为真话,0为假话int A=(a[0]+a[4]==0);//A :我和E都没有扶老奶奶int B=(a[2]+a[4]==1);//B :老奶奶是被C和E其中一个扶过大街的int C=(a[2]+a[3]==1);//C :老奶奶是被我和D其中一个扶过大街的int D=(a[1]+a[2]==0);//D :B和C都没有扶老奶奶过街int E=(a[4]==0);//E :我没有扶老奶奶if(A+B+C+D+E==2)//5个人有且只有2个人说的是真话{for (i = 0; i < N; i++){if(a[i]) cout<<char('A'+i)<<' ';}}}return;}for(i=1;i>=0;i--){a[k]=i;f(k+1);}}int main(){f(0);return 0;}第5题:牌型种数(2015年省赛C/C++B组第7题)•小明被劫持到X赌城,被迫与其他3人玩牌。