Wiki_ki

导航

Codeforces Round #131 (Div. 2)------AB

  非常郁闷,一大早起来看结果,本来以为这次rating应该能升到1600以上的,可惜结果很惨,B题由于一个小失误,导致被别人hack成功了。由于家庭原因,老妈不准熬夜做,做了39min把AB两道简单题做完就没做了,本来想AB应该全AC的,名次也不会差,但是被hack了。废话不多说了,简单的回顾一下AB两道题目。

  题目链接http://codeforces.com/contest/214

  A:直接枚举的,暂时也没什么好的数学方法,不过数据比较小,枚举依然很快。

#include <iostream>

using namespace std;

int n , m;
int a , b , ans = 0;

int main () {
    cin >> n >> m;
    a = 0;
    while (a*a <= n) {
        b = n-a*a;
        if (a+b*b == m) ans ++;
        a ++;
    }
    cout << ans << endl;
    return 0;
}

  B:题目的意思就是给出一堆数字,让你用这些数字组成可以被2,3,5整除的最大的数,被2,5整除的话末尾必为0,然后将所有的数字加起来求和得到,对3取余,然后找出最小的整数X,其中X满足所有位的数字都在给出数字的范围内,并且要预留一个0(这个我考虑到了,但后面还有个跟0相关的),由于有0的存在,所以不用担心X找不到。然而过了小数据的我以为没有问题了,其实依然存在问题,那就是如果我去除了很多数字后,剩下了N个0,但是我的输出是0000000...(N个),而正确的输出应该是0,所以我直接就跪了T_T,果然当时应该检查一遍再lock睡觉的。

#include <iostream>
#include <cstring>
#define MAXN 100002
#define MAX 2147483647
using namespace std;

int N;
int sum = 0;
bool flag = false;
int h[10];

bool check(int  sum) {
    int u[10];
    memset(u,0,sizeof(u));
    while (sum) {
        u[sum % 10] ++;
        sum /= 10;
    }
    if (u[0] >= h[0]) return false;
    for (int i = 1;i <= 9;i++)
        if (u[i] > h[i]) return false;
    return true;
}

void    calc(int  sum) {
    while (sum) {
        h[sum % 10] --;
        sum /= 10;
    }
}

bool    ok() {
    int i;
    for (int i = 1;i <= 9;i++)
        if  (h[i]) return true;
    return false;
}

int main () {
    int t;
    memset(h,0,sizeof(h));
    cin >> N;
    for (int i = 0;i < N;i++)
        cin >> t , h[t] ++ , sum += t;
    if (!h[0]) cout << -1 << endl;
        else {
            t = sum % 3;
            if (sum) {
                for (;!check(t) && t < MAX;t += 3);
                calc(t);
            }
            if (ok())
            for (int i = 9;i >= 0;i--)
                for (int j = 0;j < h[i];j++)
                    cout << i;
            else cout << 0;
            cout << endl;
        }
    return 0;
}

  代码有点小丑。

  测试结果:

  

  结果反正不行,难得我睡觉前还想了下,应该没有问题。

posted on 2012-07-31 11:42  Wiki_ki  阅读(154)  评论(0编辑  收藏  举报