5.10号个人赛补题
A题
没看懂,数学水平达不到……
最后是x可以被gcd(a,b)除后为偶数
#include<algothrim> #include<iostream> using namespace std; int gcd(int x,int y) { if(x%y==0) return y; return gcd(y,x%y); } int main(){ int T; cin>>T; while(T--){ int a,b,n; cin>>n>>a>>b; int MOD=gcd(a,b); if(n/MOD%2==0) cout<<"NO"<<endl; else cout<<"yes"<<endl; } }
F:差分
后来做了一个比较相似的题目
http://acm.hdu.edu.cn/showproblem.php?pid=1556
#include<iostream> #include<cstdio> #include<set> #include<queue> #include<stack> #include<vector> #include<bitset> #include<cstring> #include<string> #include<algorithm> using namespace std; typedef long long ll; const int MAXN=1e5+10; inline int read(){ int x=0,y=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-'){ y=-1; } ch=getchar(); } while(ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*y; } int main(){ int n; while(scanf("%d",&n)){ int a[MAXN]; memset(a,0,sizeof(a)); if(n==0) break; int l,r; for(int i =1;i<=n;i++){ scanf("%d%d",&l,&r); a[l]++;a[r+1]--; } for(int i =1;i<=n;i++){ a[i]+=a[i-1]; } for(int i =1;i<=n;i++){ if(i!=1) printf(" "); printf("%d",a[i]); } printf("\n"); } return 0; }

浙公网安备 33010602011771号