2018藍橋杯省賽B組
6.第幾天
#include <iostream>
using namespace std;
int main()
{cout<<125;
// 請在此輸入您的程式碼
return 0;
}
計算:
31+29+31+30+4=125
計算的程式碼
#include<bits/stdc++.h>
using namespace std;
int ans;
int main()
{
int m[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//考:每個月天數的表示
int y1=1;
int r1=1;
int y2=5;
int r2=4;
while(!((y1==y2)&&(r1==r2))){
r1++;
if(r1>m[y1]){
r1=1;
y1++;
}
ans++;
}
cout<<ans+1;
// 請在此輸入您的程式碼
return 0;
}
A.明碼
//第一步弄清楚這段文字是什麼這是個漢字
#include<bits/stdc++.h>
using namespace std;
void two(int i,string&a){
//對於一個整數化成8位二進位制,範圍-128~127,對於正數最高位在二進位制中是0也就是預設的-,對於負數最高位是1
if(i>=0){
for(int j=0;j<7;j++){
if((i>>j)&1==1){
a[8-j-1]='1';
}
}
}
else{//負數
a[0]='1';
for(int j=0;j<7;j++){
if(((128+i)>>j)&1==1){
a[8-j-1]='1';
}
}
}
}
int main(){
/*解析:題目中說有十個漢字,剛好十行,一行一個漢字!然後 一個漢字十六行,一行2個位元組,所以一個漢字32個位元組,剛好一行32個整數,所以一個整數
表示1個位元組,所以我們的任務是將每個漢字的字形先輸出按照一行兩位元組(2個整數-->化成2進位制)一個漢字16行,然後透過漢字讀懂題最後輸出答案。
關鍵:將任意整數化成二進位制
怎麼看:1為墨跡要看的,-不管
*/
for(int i=0;i<10;i++){//10個整數
for(int j=0;j<16;j++){//1個整數16行,1行兩位元組(2個是十進位制整數)
int x,y;
cin>>x>>y;
//先預設一行的兩位元組,等會兒只用看哪一位化成二進位制是1,如果是0就不用變還是-
string a="--------";
string b="--------";
two(x,a);
two(y,b);
cout<<a+b<<endl;
}
cout<<"====================================================";//下一個漢字
}
return 0;
}
//第二步計算要提交的答案-->上面文字為9的9次方等於多少?
#include<bits/stdc++.h>
using namespace std;
int main(){
long long int ans=1;
for(int i=0;i<9;i++){
ans*=9;
}
cout<<ans;
return 0;
}
//填空題只用提交答案
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"387420489 ";
return 0;
}
考點:
讀懂題-->確定是考察化整數為二進位制
化成二進位制模版
void two(int i,string&a){
//對於一個整數化成8位二進位制,範圍-128~127,對於正數最高位在二進位制中是0也就是預設的-,對於負數最高位是1
if(i>=0){
for(int j=0;j<7;j++){
if((i>>j)&1==1){
a[8-j-1]='1';
}
}
}
else{//負數i和正數128+i只有最高位不同
a[0]='1';
for(int j=0;j<7;j++){
if(((128+i)>>j)&1==1){
a[8-j-1]='1';
}
}
}
}