萌新一枚,检查不出错误,请教大神

P2010 [NOIP2016 普及组] 回文日期

Simon_Lu @ 2019-07-25 08:12:12

include<iostream>

using namespace std; int main(){ int date1,date2,year,month,day,flag=0,i,md,md2=28; int d1,d2,d3,d4,dx; cin>>date1>>date2; for(i=date1;i<=date2;i++){ year=i/10000; if((year%4==0&&year%100!=0)||year%400==0) md2=29; else md2=28; month=(i%10000-i%100)/100; if(month==12&&day==30) i=i+10000-1100-md+1; switch(month){ case 1:md=31; case 2:md=md2; case 3:md=31; case 4:md=30; case 5:md=31; case 6:md=30; case 7:md=31; case 8:md=30; case 9:md=31; case 10:md=30; case 11:md=31; case 12:md=30; } day=i%100; if(day>md) i=i+100-md+1; d1=i%10; d2=(i%100-d1)/10; d3=(i%1000-d1-d2)/100; d4=(i%10000-d1-d2-d3)/1000; dx=d11000+d2100+d3*10+d4; if(dx==year) flag++; } cout<<flag; return 0; }


by Simon_Lu @ 2019-07-25 08:12:52

希望能够改正!


by Hyxss @ 2019-07-25 08:15:31

希望更丰富的展现?使用Markdown


by AFO蒟蒻选手 @ 2019-07-25 08:24:15

@MIT_LST 希望更丰富的展现?使用Markdown


by _lzh @ 2019-07-25 08:30:53

希望更丰富的展现?使用Markdown


by Simon_Lu @ 2019-07-25 08:48:54

include<iostream>

using namespace std; int main(){ int date1,date2,year,month,day,i,md,md2,flag=0; int d1,d2,d3,d4,dx; cin>>date1>>date2; for(i=date1;i<=date2;i++){ year=i/10000; if((year%4==0&&year%100!=0)||year%400==0) md2=29; else md2=28; d1=i%10; d2=(i%100-d1)/10; d3=(i%1000-d1-d2)/100; d4=(i%10000-d1-d2-d3)/1000; dx=d11000+d2100+d3*10+d4; month=(i%10000-i%100)/100; day=i%100; switch(month){ case 1:md=31; case 2:md=md2; case 3:md=31; case 4:md=30; case 5:md=31; case 6:md=30; case 7:md=31; case 8:md=31; case 9:md=30; case 10:md=31; case 11:md=30; case 12:md=31; if(dx==year&&day==md&&month<=12){ flag++; i=i+10000-1130; } } cout<<flag; return 0; } }


by Simon_Lu @ 2019-07-25 08:59:11


by 蒟蒻甜心面包 @ 2019-07-25 09:03:42

@MIT_LST

问题一:不要用switch语句了,多年不用的我已经全忘了,帮不了你。(在NOIp中也不常用)

问题二:以后提问时发代码不要圧行或是用对话框发上来,看着有点难受,容易看漏看错,不利于发现问题,建议使用markdown;

把我的代码发给你,可以参考一下(我太弱了,逃)

#include<bits/stdc++.h> 
using namespace std;
long long ans,m,n,date,num;
int mo[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=12;i++)
for(int j=1;j<=mo[i];j++){
date=(j%10)*1000+(j/10)*100+(i%10)*10+(i/10);
num=date*10000+i*100+j;
if(num<n||num>m)continue;
ans++;
}
cout<<ans;
}

以上就是我愚笨肤浅的蒟蒻看法;


by Simon_Lu @ 2019-07-25 09:05:19

https://pan.baidu.com/s/1g3MrpioPZzyiLDz9MGzGxA 提取码:6dxa


by Trinitrotoluene @ 2019-07-25 09:19:05

如果我没有记错的话,switch的用法为:

switch(表达式){

case 值1:{语句1;break;}

case 值2:{语句2;break;}

...

default:{语句n;break;}

}


by Simon_Lu @ 2019-07-25 14:05:17

@Trinitrotoluene 单行语句可以不加括号


| 下一页