1 条题解
-
1
题前:
悲!就因在考场上写错一个数字,AC变70!
这道题我在盐城大丰高级中学的考场上用了1小时+(因为就剩1小时+的时间了),所以我本来只想骗骗分,可没想到越做越顺手,到最后竟用打表暴力O(1)时间复杂度做完了??!!!
其实此题也没什么难的,就是推推规律就知道怎么做了。
思路:
我们可以用几位数来解决这道题。
注意:此题只有木棍数为1的时候无解输出-1,其它木棍数是绝对有解绝不输出-1的。所以想用-1来骗分的你会爆0或只能拿10分。
由题可知,一位数内,用木棍数最少的数字是1,用了2根;用木棍数最多的数字是8,用了7根。当木棍数超过7根时,我们便来到了二位数。二位数内,用木棍数最少的数字是10,用了8根;用木棍数最多的数字是88,用了15根。当木棍数超过15根时,我们便来到了三位数。以此类推,木棍数每7根为一个位数,接下来我们就逐一分析。
一位数:这个就是自己在题目给的图片数一下木棍数就出来了,没什么好讲的。
(但是就是因为在这里写错一个数字,AC变70!)二位数:逐一分析。木棍数8,数字10。木棍数9,数字18。木棍数10,数字22。木棍数11,数字20。木棍数12,数字28。木棍数13,数字68。木棍数14,数字88。
三位数:逐一分析。木棍数15,数字108。木棍数16,数字188。木棍数17,数字200。木棍数18,数字208。木棍数19,数字288。木棍数20,数字688。木棍数21,数字888。
四位数:逐一分析。木棍数22,数字1088。木棍数23,数字1888。木棍数24,数字2008。木棍数25,数字2088。木棍数26,数字2888。木棍数27,数字6888。木棍数28,数字8888。
结合二三四位数,同余的数都是有规律的。
余数为1:二位数输出10,三位数及以上就在10后加位数-2个8。 余数为2:二位数及以上就在1后加位数-1个8。 余数为3:二位数输出22,三位数输出200,四位数及以上就在200后加位数-3个8。 余数为4:二位数输出20,三位数及以上就在20后加位数-2个8。 余数为5:二位数及以上就在2后加位数-1个8。 余数为6:二位数及以上就在6后加位数-1个8。 余数为0:几位数就几个8。
代码:
#include<bits/stdc++.h> using namespace std; int main(){ freopen("sticks.in","r",stdin); freopen("sticks.out","w",stdout); int t,n; cin>>t; while(t--){ cin>>n; if(n==1){ cout<<-1; cout<<endl; } else if(n==2){ cout<<1; cout<<endl; } else if(n==3){ cout<<7; cout<<endl; } else if(n==4){ cout<<4; cout<<endl; } else if(n==5){ cout<<2;//本来输出2我写的输出5,AC变70,悲! cout<<endl; } else if(n==6){ cout<<6; cout<<endl; } else if(n%7==0&&n>=7){ for(int i=1;i<=n/7;i++){ cout<<8; } cout<<endl; } else if(n%7==1&&n>=8){ if(n==8){ cout<<10; } else{ cout<<10; for(int i=1;i<=n/7-1;i++){ cout<<8; } } cout<<endl; } else if(n%7==2&&n>=9){ cout<<1; for(int i=1;i<=n/7;i++){ cout<<8; } cout<<endl; } else if(n%7==3&&n>=10){ if(n==10){ cout<<22; } else{ cout<<200; for(int i=1;i<=n/7-2;i++){ cout<<8; } } cout<<endl; } else if(n%7==4&&n>=11){ if(n==11){ cout<<20; } else{ cout<<20; for(int i=1;i<=n/7-1;i++){ cout<<8; } } cout<<endl; } else if(n%7==5&&n>=12){ cout<<2; for(int i=1;i<=n/7;i++){ cout<<8; } cout<<endl; } else if(n%7==6&&n>=13){ cout<<6; for(int i=1;i<=n/7;i++){ cout<<8; } cout<<endl; } } fclose(stdin); fclose(stdout); return 0; }
信息
- ID
- 34939
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 3
- 上传者