第四届省赛F题

http://acm.upc.edu.cn/problem.php?id=2222

展开:


发现有如下关系:

比如数字5,转化成二进制,如下第一个表格

第四届省赛F题_第1张图片

然后对照上式及第二个表格,发现,如果是1,就乘上它。

最后系数就ok了。

如果P>=2^n,系数都是0了;如果P=0,系数是1。

代码明天上,在看WWDC~~

懒死我算了。。。用的bitset= =

#include <iostream>
#include <bitset>
#include <cmath>

using namespace std;

int main()
{
    int coef[55];
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        for(int i = 0; i < n; i++)
        {
            cin>>coef[i];
        }
        int q;
        cin>>q;
        long long int p;
        while(q--)
        {
            cin>>p;
            if(p >= pow(2,n))
            {
                cout << 0 << endl;
                continue;
            }
            bitset<80> a(p);
            int fac = 1;
            for(int i = 0; i < a.size(); i++)
            {
                if(a[i])
                {
                    fac = fac * coef[i] % 2012;
                }
            }
            cout<<fac<<endl;
        }
    }
}


你可能感兴趣的:(ACM题解报告)