判断数组中是否含有另一个数组 示例 输入asd asdas d asd 输出2
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s1[1005];
char s2[1005];
int main() {
fgets(s1,1004,stdin);
fgets(s2,1004,stdin);
int len1 = strlen(s1)-1;
int len2 = strlen(s2)-1;
int c = 0;
for (int i = 0; i < len1-len2+1; i++) {
bool key = true;
for (int j = 0; j < len2; j++) {
if (s2[j]!=s1[j+i]){
key = false;
break;
}
}
if (key == true){
c++;
}
}
cout <<c;
}
主要就是要注意如何挨着判断
判断闰年: 1.年份非整且能被4整除 2.年份能被400整除
if(y%400==0||(y%100!=0&&y%4==0)){
cout << "闰年";
}
判断星期几 蔡基姆拉尔森公式 设星期为w,年份为y,月份为m,日期为d w=(d+2m+3(m+1)/5+y+y/4-y/100+y/400)%7 注意,每年的1,2月份要当做上一年的13,14月份来算,且均为整除
如果是按照正常的算法来计算周几,取1年1月1日为周一
#include <iostream>
using namespace std;
bool runYear(int y){
if ((y%100!=0&&y%4==0)||y%400==0){
return true;
} else
return false;
}
int thirty_oneDay(int m){
if (m==1||m==3||m==5||m==7||m==8||m==10||m==12){
return 1;
} else if (m==4||m==6||m==9||m==11){
return 2;
} else{
return 3;
}
}
int whatday(int y,int m,int d){
int num = 0;
for (int i = 1; i < y; i++) {
if (runYear(i)){
num +=366%7;
num %=7;
} else{
num +=365%7;
num %=7;
}
}
for (int i = 1; i < m; i++) {
if (thirty_oneDay(i)==1){
num+=31%7;
num %=7;
} else if(thirty_oneDay(i)==2){
num +=30%7;
num %=7;
} else{
if (runYear(y)){
num +=29%7;
num %=7;
} else{
num +=28%7;
num %=7;
}
}
}
num +=num%7;
num %=7;
return num;
}
int main(){
int y,m,d=0;
cin >> y >> m >> d;
cout << whatday(y,m,d);
}
需要注意的就是 num +=x%7; num %=7; 这两个操作,一个是用时间取余7,就是要过了一年/一月的1号是周几,第二个就是把num变成周几,防止加上上一个周几后大于7。 很麻烦 能记住公式就记住公式,代码如下:
int main(){
int y,m,d=0;
cin >> y >> m >> d;
if (d%7==1||d%7==2){
m+=12;
y--;
}
cout << (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
}
|