3 条题解
-
7
也许代码不是最短的,但是相信我,绝对是最优(时间、空间复杂度最低)并且最容易看懂的
#include<bits/stdc++.h> using namespace std; short y,m,w,cnt=1,ans; short lastDate[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; // 月份天数表 int main(){ cin>>y>>m>>w; if(m==2){ // 如果月份是2再判断是否为闰年 if((y%100==0&&y%400==0)||(y%100!=0&&y%4==0))lastDate[2]++; } while(cnt<=lastDate[m]){ // 遍历直到最后一天 if(w%6!=0&&w%7!=0){ // 找到第一周周末后就不用遍历每天了 cnt++; w++; }else{ // 只遍历周末 ans++; if(w%7==0){ // 如果是周日,就直接跳到下周六 w=6; cnt+=6; } else{ w++; cnt++; } } } cout<<ans; return 0; }
虽然在这么低的数量级中不优化那一点点的复杂度也毫无问题,但是既然编程就要做到最优,而不是想着钻题目的空子(当然如果你真在考csp而且时间不够了就可以这样awa)
-
2
由于测试点太水把2月定位28天即可AC
#include <cstdio> //我就不用万能头~ #include <iostream> using namespace std; int a , b , c , sum; // 年,月,日 ,总数 int aaa[15] = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31}; // 天数 bool qwq(int yy){ //闰年判断(因测试点太拉,所以可省略) if(yy % 100 == 0) { if(yy % 400 == 0) return true;} else if(yy % 4 == 0) return true; return false; } int main(){ cin >> a >> b >> c; //输入 if(b == 2 && qwq(a)) aaa[2] = 29; // 改2月(可省略) for(int i = 1;i <= aaa[b];i++,c++) if(c == 8) c = 1; //限制范围 else if(c == 6 || c == 7) sum++; printf("%d",sum); return 0; //好习惯 }
我不是dalao!
-
-4
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 1263
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 191
- 已通过
- 101
- 上传者