1.好数 - 蓝桥云课
一个个枚举,要求奇数位是奇数,偶数位是偶数
#include<bits/stdc++.h>
using namespace std;
bool check(int n)
{int cha=1;while(n){if(n%10%2!=cha)return false;n/=10;cha=1-cha;}return true;
}
int main()
{int n;cin>>n;int count1=0;for(int i=1;i<=n;i++)if(check(i))count1++;cout<<count1;
}
日期模拟
逐天处理每个日期,注意处理闰年
最好要写三层循环,分别枚举年月日
1.艺术与篮球 - 蓝桥云课
#include<bits/stdc++.h>
using namespace std;
int cnt1[10]={13,1,2,3,5,4,4,2,2,2};
int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void solve()
{int ans=0;for(int year=2000;year<=2024;year++){if(year%4==0&&year%100!=0||year%400==0)months[2]=29;elsemonths[2]=28;for(int month=1;month<=12;month++){for(int day=1;day<=months[month];day++){int cnt=0;for(int i=0,solve=1;i<4;i++){cnt+=cnt1[year/solve%10];solve*=10;}for(int i=0,solve=1;i<2;i++){cnt+=cnt1[month/solve%10];solve*=10;}for(int i=0,solve=1;i<2;i++){cnt+=cnt1[day/solve%10];solve*=10;}if(cnt>50) ans++;if(year==2024&&month==4&&day==13){cout<<ans;return;}}}}
}
int main()
{solve();return 0;
}
进制转化
k进制转十进制
int calc(char c)
{if(c>='A')return 10+c-'A';return c-'0';
}
int change(string s,int k)//k进制的数用字符串表示
{int ans=0;for(int i=0;i<s.size();i++)ans=ans*k+calc(s[i]);return ans;
}
十进制转k进制
string change(int x,int k)//k进制的数用字符串表示
{string ans;while(x!=0){int t=x%k;if(t<=9)ans=ans+(char)('0'+t);elseans=ans+(char)('A'+t-10);x/=k;}reverse(ans.begin(),ans.end());return ans;
}
1.穿越时空之门 - 蓝桥云课
#include<bits/stdc++.h>
using namespace std;
int change(int x,int k)//k进制的数用字符串表示
{int ans=0;while(x!=0){ans+=x%k;x/=k;}return ans;
}int main()
{int ans=0;for(int i=1;i<=2024;i++){if(change(i,2)==change(i,4))ans++;}cout<<ans;
}
