美团选择题好多好难,编程题倒是两道水题
第一题不是121212....就是212121,推下就知道4,7,10....这些是121212。
第二题呢,看错题意了,我以为是每次变化后第几个数移到前面,这个不会做啊。有没大佬做下?
然后看样例发现看错题了,离线做,最后面的肯定是在最前面的,然后标记下输出就行了
选择题真的多还难啊!
---------------------------------------------------
我还是贴下代码吧,写得有点搓
#include<cstdio> using namespace std; int main() { int s,n; while(scanf("%d",&n) != EOF) { if(n < 3) printf("%d\n",n); else if(n==3)printf("21\n"); else { if((n - 1) % 3 == 0) { bool flag = false; while(n) { if(flag) { printf("2"); n -= 2; } else { printf("1"); n -= 1; } flag = !flag; } puts(""); } else { bool flag = true; while(n) { if(flag) { printf("2"); n -= 2; } else { printf("1"); n -= 1; } flag = !flag; } puts(""); } } } return 0; }
#include<cstdio> #include<cstring> using namespace std; int a[100005]; bool vis[100005]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i = 0; i < m; i++) { scanf("%d",&a[i]); } memset(vis,0,sizeof(vis)); for(int i = m-1; i >= 0; i--) { if(!vis[a[i]]) { printf("%d\n",a[i]); vis[a[i]] = true; } } for(int i = 1; i <= n; i++) { if(!vis[i]) printf("%d\n",i); } return 0; }