Codeforces Round #282 (Div. 2) B. Modular Equations&C. Treasure

来源:互联网 发布:工程网络计划名词解释 编辑:程序博客网 时间:2024/05/05 16:15

B. Modular Equations

题意:给一对a、b (0<a,b<10^9); 求满足 amod x =b 的x有多少,若无限则print "infinity" (without the quotes)。

题解:a这么大优化地枚举吧;由于a-b=i*x 看来枚举到sqrt(a-b)就够了;

这题做记录只想对自己说:你敢有多粗心,系统就敢有多少罚时!!

#define INF 0x7fffffff#define eps (1e-9)#define mid 250#define maxn 1000000000#define clearto(s,x) memset(s,x,sizeof(s))using namespace std;int n, m, tot=0;int main(){    //freopen("E:\DATA.txt","r",stdin);    //int TT=1,tt+=1;            scanf("%d",&TT);    int i=0,j=0,s=0,t=0;    int a,b;    scanf("%d%d",&a,&b);    int ans=0;    if(a==b)        {   printf("infinity");  return 0;  }    if(a==0||a< b)  {   printf("0");  return 0;   }          // a==0 真的是很特殊情况啊    n= a-b;   m=sqrt(a-b);    for(i=1;i<=m;i++){        if(n%i)         continue;                       if(i> b)        ans++;        if((n/i >b)&&(i*i!=n))    ans++;    }    printf("%d",ans);    return 0;}

C. Treasure

题意:There was a string s written on the door consisting of characters '(', ')' and '#'.用一个或多个‘)’代替‘#’使得S是beautiful;就是最终左右括号个数相等,且从左往右任何时候')'不超过'('数量

就感慨一下   挖掘题目中的性质真是太重要了;就我那一开始就傻瓜式的模拟,作死;

题解:如果能替换成功,则可以前面#多于1的替换都放到最后一个# ;运用这性质随便替换一下,再随随便检查一下就OK了。

#define INF 0x7fffffff#define eps (1e-9)#define lenq 2<<16#define maxn 199999999#define clearto(s,x) memset(s,x,sizeof(s))using namespace std;int n, m, tot=0;int val[100005];char dic[100005];int main(){    //freopen("E:\DATA.txt","r",stdin);    //int TT=1,tt=1;         scanf("%d",&TT);    int i=0,j=0,k=0,t=0;     clearto(val,0);    scanf("%s",dic);    int len=strlen(dic);    int sum=0,id=0;    for(i=0;i<len;i++)       //先找找缺多少个‘)’和最后一个#位置    {        if(dic[i]=='(') { val[i]= 1;  sum++;  }        if(dic[i]==')') { val[i]=-1;  sum--;  }        if(dic[i]=='#') {           val[i]=-1;     id=max(id,i);  sum--;  tot++;        }    }    if(sum<0) { printf("-1");    return 0; }    val[id]=val[id]-sum;         sum=0;    for(i=0;i<len;i++)           //  完了检查一下    {        sum=sum+val[i];        if(sum<0) { printf("-1");     return 0; }    }    for(i=1;i<=tot;i++){       if(i!=tot)  printf("1\n");       else        printf("%d",-val[id]);    }    return 0;



0 0
原创粉丝点击