直接计算
#include<iostream>
#include<cmath>
using namespace std;
int main(){
cout<<2*pow(9,3)+2*pow(9,1)+2*pow(9,0);
return 0;
}
先判断是否为顺子
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int months[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//判断是否为顺子
bool check(string str){
for(int i=0;i+2<str.size();i++){
if(str[i+1]==str[i]+1&&str[i+2]==str[i]+2)
return true;
}
return false;
}
int main(){
int year=2022,month=1,day=1;
int res=0;
for(int i=0;i<365;i++){
char str[10];
sprintf(str,"%04d%02d%02d",year,month,day);
if(check(str)){
res++;
cout<<str<<endl;
}
if(++day>months[month]){
day=1;
month++;
}
}
cout<<res<<endl;
return 0;
}
法一:
#include<iostream>
#include<cstring>
#include<algorithm>
typedef long long ll;
using namespace std;
int main(){
ll a,b,m,count=0,day=0;
cin>>a>>b>>m;
int weeks[]={a,a,a,a,a,b,b};
while(count<m){
count+=weeks[day%7];
day++;
}
cout<<day<<endl;
return 0;
}
法二:
//枚举
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
ll a,b,m;
cin>>a>>b>>m;
ll s=5*a+2*b;
ll res=m/s*7;
m%=s;
//枚举
ll d[]={a,a,a,a,a,b,b};
for(int i=0;m>0;i++){
m-=d[i];
res++;
}
cout<<res;
return 0;
}