2020年第11届蓝桥杯C++B组 第一次省赛真题
#include <iostream>
using namespace std;int power = 10000; //体力 int consumeSec = 10; //每秒消耗体力
int recoverSec = 5;//每秒增加体力
int totalSec;int main(){while(1){if(power > 600){//若体力大于600,则可认为此次的一分钟消耗不完 power-=600; totalSec+=60;}else{totalSec += (power/consumeSec);//体力小于等于600,此次的一分钟一定可以结束 break;}power+=60*recoverSec;//体力恢复 totalSec+=60;//时间相加 }cout<<totalSec<<endl;return 0;
}
- 使用电脑计算器
- 使用Execl表格,直接求差即可
- 代码编写
#include <iostream>
using namespace std;//思路:求解1921年的后半年 2020年的前半年bool isleap(int year){if(year%4==0 && year%100!=0 || year%400==0)return true;elsereturn false;
}int ans;/**
* isleap 当前年是否为闰年
* month 月份
* day 天
* hour 小时
* isforward 是否正向求时间
**/
int getHour(bool isleap, int month, int day, bool isforward){int months[13] = {29,31,28,31,30,31,30,31,31,30,31,30,31};if(isleap) months[2] = months[0];int total = day;for(int i=1;i<month;i++){total+=months[i];} if(!isforward) total = isleap?366-total:365-total;return total*24*60;
}int main(){//求整年的时间 for(int i=1922;i<=2019;i++){isleap(i)?ans+=366:ans+=365;}//天转为小时 ans = ans*24*60; ans+=getHour(isleap(1921),7,23,false);ans+=getHour(isleap(2020),7,1,true);cout<<ans<<endl;return 0;
}
假设A国有n人,则总的试剂盒有n*(1/k)+nrk,提取n,则有n*((1+k)+rk),使用均值不等式即可
#include <iostream>
using namespace std;int main(){long long n;cin>>n;while(n>0){cout<<n<<" ";n/=2;}return 0;
}
#include <iostream>
using namespace std;int main(){string str;cin>>str;int i;//H3el5o2for(i=0;i<str.length()-1;){char c = str[i+1];if(c >= '0' && c <= '9'){int len = c-'0';for(int j=1;j<=len;j++)cout<<str[i];i+=2;}else{cout<<str[i];i++;}}if(i<str.length()){cout<<str[str.length()-1];}return 0;
}
#include <iostream>
using namespace std;const int MAX = 30+1;int n,m;
int rec[MAX][MAX];
int direct[][2] = {{-1,0},{0,1},{1,0},{0,-1}};
int ans;void dfs(int x,int y){if(x==n && y==m){ans++;return;}for(int i=0;i<4;i++){int xx = x+direct[i][0];int yy = y+direct[i][1];if(xx>=1 && xx<=n && y>=1 && y<=m && !(xx%2==0 && yy%2==0)){if(rec[xx][yy]==0){rec[xx][yy]=1;dfs(xx,yy);rec[xx][yy]=0;}}}
}int main(){cin>>n>>m;dfs(1,1);cout<<ans<<endl;return 0;
}
#include <iostream>
using namespace std;
#include <sstream>
#include <string>#define MAX 100001int n,K;
int array[MAX];int ans;long long conver(int a,int b){stringstream ss; string sa;string sb;ss.clear();//重置ss<<a;ss>>sa;ss.clear();//重置 ss<<b;ss>>sb;string s = sa+sb; ss.clear();ss<<s;long long res;ss>>res;return res;
}/*4 21 2 3 4
*/int main(){cin>>n>>K;for(int i=1;i<=n;i++)cin>>array[i];long long res = -1;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){res = conver(array[i],array[j]);if(res%K==0) ans++;res = conver(array[j],array[i]);if(res%K==0) ans++;} }cout<<ans<<endl;return 0;
}
2020年第11届蓝桥杯C++B组 第一次省赛真题
#include <iostream>
using namespace std;int power = 10000; //体力 int consumeSec = 10; //每秒消耗体力
int recoverSec = 5;//每秒增加体力
int totalSec;int main(){while(1){if(power > 600){//若体力大于600,则可认为此次的一分钟消耗不完 power-=600; totalSec+=60;}else{totalSec += (power/consumeSec);//体力小于等于600,此次的一分钟一定可以结束 break;}power+=60*recoverSec;//体力恢复 totalSec+=60;//时间相加 }cout<<totalSec<<endl;return 0;
}
- 使用电脑计算器
- 使用Execl表格,直接求差即可
- 代码编写
#include <iostream>
using namespace std;//思路:求解1921年的后半年 2020年的前半年bool isleap(int year){if(year%4==0 && year%100!=0 || year%400==0)return true;elsereturn false;
}int ans;/**
* isleap 当前年是否为闰年
* month 月份
* day 天
* hour 小时
* isforward 是否正向求时间
**/
int getHour(bool isleap, int month, int day, bool isforward){int months[13] = {29,31,28,31,30,31,30,31,31,30,31,30,31};if(isleap) months[2] = months[0];int total = day;for(int i=1;i<month;i++){total+=months[i];} if(!isforward) total = isleap?366-total:365-total;return total*24*60;
}int main(){//求整年的时间 for(int i=1922;i<=2019;i++){isleap(i)?ans+=366:ans+=365;}//天转为小时 ans = ans*24*60; ans+=getHour(isleap(1921),7,23,false);ans+=getHour(isleap(2020),7,1,true);cout<<ans<<endl;return 0;
}
假设A国有n人,则总的试剂盒有n*(1/k)+nrk,提取n,则有n*((1+k)+rk),使用均值不等式即可
#include <iostream>
using namespace std;int main(){long long n;cin>>n;while(n>0){cout<<n<<" ";n/=2;}return 0;
}
#include <iostream>
using namespace std;int main(){string str;cin>>str;int i;//H3el5o2for(i=0;i<str.length()-1;){char c = str[i+1];if(c >= '0' && c <= '9'){int len = c-'0';for(int j=1;j<=len;j++)cout<<str[i];i+=2;}else{cout<<str[i];i++;}}if(i<str.length()){cout<<str[str.length()-1];}return 0;
}
#include <iostream>
using namespace std;const int MAX = 30+1;int n,m;
int rec[MAX][MAX];
int direct[][2] = {{-1,0},{0,1},{1,0},{0,-1}};
int ans;void dfs(int x,int y){if(x==n && y==m){ans++;return;}for(int i=0;i<4;i++){int xx = x+direct[i][0];int yy = y+direct[i][1];if(xx>=1 && xx<=n && y>=1 && y<=m && !(xx%2==0 && yy%2==0)){if(rec[xx][yy]==0){rec[xx][yy]=1;dfs(xx,yy);rec[xx][yy]=0;}}}
}int main(){cin>>n>>m;dfs(1,1);cout<<ans<<endl;return 0;
}
#include <iostream>
using namespace std;
#include <sstream>
#include <string>#define MAX 100001int n,K;
int array[MAX];int ans;long long conver(int a,int b){stringstream ss; string sa;string sb;ss.clear();//重置ss<<a;ss>>sa;ss.clear();//重置 ss<<b;ss>>sb;string s = sa+sb; ss.clear();ss<<s;long long res;ss>>res;return res;
}/*4 21 2 3 4
*/int main(){cin>>n>>K;for(int i=1;i<=n;i++)cin>>array[i];long long res = -1;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){res = conver(array[i],array[j]);if(res%K==0) ans++;res = conver(array[j],array[i]);if(res%K==0) ans++;} }cout<<ans<<endl;return 0;
}
发布评论