题意:给定n个整数Ai,定义一种运算concat(Ai,Aj)讲AiAj拼接在一起如concat(12,34)=1234
若i,j上颜色不同有运算concat(Ai,Aj)×concat(Aj,Ai)+Ai×Aj≡Zmod3
思路:
代码:
#include<iostream> using namespace std; const int N = 1e5+10; int a[N]; int main() { int n, cnt = 0; scanf("%d", &n); for(int i = 0; i < n; i++) { long long t; scanf("%lld", &t); a[i] = (t*t)%3; if(a[i])//非0 cnt ++; } if(cnt < n/2)//非0个数小于0 { printf("2\n"); int res = (n-2*cnt)/2;//内部分配组数 for(int i = 0; i < n; i++) { if(a[i]) printf("1"); else if(res){ printf("1"); res--; }else{ printf("0"); } } printf("\n"); }else{ printf("0\n"); int res = (2*cnt-n)/2;//内部分配组数 for(int i = 0; i < n; i++) { if(!a[i]) printf("0"); else if(res){ printf("0"); res--; }else{ printf("1"); } } printf("\n"); } return 0; }
反思:
要好好注意格式要求,多带空格wa了一发
检查是否需要开long long,因为忘记t开longlong又wa一发A
标签:1725H,cnt,int,res,else,Ai,Hot,Black,printf From: https://www.cnblogs.com/lys-blogs123/p/17173320.html