山東省第四屆ACM大學生程式設計競賽-Alice and Bob(二進位制&&找規律)
Alice and Bob
Time Limit: 1000MS Memory limit: 65536K
題目描述
Alice and Bob like playing games very much.Today, they introduce a new game.
There is a polynomial like this: (a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1). Then Alice ask Bob Q questions. In the expansion of the Polynomial, Given an integer P, please tell the coefficient of the x^P.
Can you help Bob answer these questions?
輸入
For each case, the first line contains a number n, then n numbers a0, a1, .... an-1 followed in the next line. In the third line is a number Q, and then following Q numbers P.
1 <= T <= 20
1 <= n <= 50
0 <= ai <= 100
Q <= 1000
0 <= P <= 1234567898765432
輸出
示例輸入
1 2 2 1 2 3 4
示例輸出
2 0
提示
來源
題目意思:
給定(a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1)
這個式子的係數a,展開這個式子後,求x^q的係數。
解題思路:
(a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1)
展開看看:
當n=0:
1+a0*x^20
當n=1:
1+ a0 *a1*x^20*x^21+a1*x^21+a0*x^20
當n=2:
1+ a0 *a1*a2*x^20*x^21*x^22+a2*x^22+a1*x^21+a0*x^20+a2*a1*x^22*x^21+a1*a0*x^21 *x^20+ a2*a0*x^22*x^20
………………
所以展開式中不存在可以合併同類項的情況,直接藉助係數a就可以運算。
先看下面這張表(q在題目中是x的指數):
q 二進位制 x的指數
1 1 (20)
2 10 (21)
3 11 (21 +20)
4 100 (22)
5 101 (22 +20)
6 110 (22 +21)
7 111 (22 +21+20)
8 1000 (23)
9 1001 (23+20)
發現了什麼規律?
對了,就是把指數轉換成二進位制數,再把二進位制數中所有“1”的權值都加起來!!
舉個栗子:
q=3時,x^3的係數=a[1]*a[0];
q=6時,x^6的係數=a[2]*a[1];
q=7時,x^7的係數=a[2]*a[1]*a[0];
q=10時,x^10的係數=a[3]*a[1];
這些得到的係數就是題目要求的答案呀~
還有個坑,就是用C語言的printf輸出死活都是WA,一改成C++的cin就AC了,估計是long long的格式控制問題吧。。
(⊙v⊙)嗯發現了,我在山理工的oj下提交這道題long long 不能用%I64d,用%lld就能過了~
下面上程式碼:
/*
* Copyright (c) 2016, 煙臺大學計算機與控制工程學院
* All rights reserved.
* 檔名稱:number.cpp
* 作 者:單昕昕
* 完成日期:2016年4月12日
* 版 本 號:v1.0
*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <time.h>
#include <stdlib.h>
using namespace std;
int a[51];//a0~an-1
long long ans,p;
int main()
{
int t,i,n,q;
cin>>t;
while(t--)
{
cin>>n;
for(i=0; i<n; ++i)
cin>>a[i];
cin>>q;
while(q--)
{
i=0;
ans=1;
cin>>p;
while(p)
{
//注意!!當此n下無指數p時,即位數超出n
if(i>=n)
{
ans=0;
break;
}//下面是一個類似於轉換二進位制的過程
if(p%2)
ans=(ans*a[i])%2012;
++i;
p/=2;
}
cout<<ans<<endl;
}
}
return 0;
}
相關文章
- 第十屆山東省大學生程式設計競賽題解(A、F、M、C)程式設計
- 第15屆浙江省大學生程式設計競賽D題程式設計
- 第二十屆西南科技大學ACM程式設計競賽(同步賽)ACM程式設計
- 2019山東ACM省賽補題題解ACM
- 無錫學院2024年ACM大學生程式設計競賽校選賽 題解ACM程式設計
- [題解][2021-2022年度國際大學生程式設計競賽第10屆陝西省程式設計競賽] Type The Strings程式設計
- 2020 年第一屆遼寧省大學生程式設計競賽 D.開心消消樂(點分治)程式設計
- 紹興市大學生程式設計競賽程式設計
- 第 10 屆 CCPC 中國大學生程式設計競賽濟南站 遊記程式設計
- 24山東省賽wp
- 第二屆“祥雲杯”網路安全大賽暨吉林省第四屆大學生網路安全大賽火熱報名中
- [補題] 第 45 屆國際大學生程式設計競賽(ICPC)亞洲區域賽(上海)程式設計
- 華中農業大學第十三屆程式設計競賽程式設計
- 第十屆中國大學生程式設計競賽 重慶站(CCPC 2024 Chongqing Site)程式設計
- 第43屆ACM-ICPC國際大學生程式設計競賽 亞洲區域賽南京站現場賽名額分配相關說明ACM程式設計
- Codeforces 346A Alice and Bob
- 2024 CCPC第五屆遼寧省程式設計競賽 集訓2程式設計
- 2020東北林業大學acm集訓第五天 二進位制操作與二進位制列舉(附相關習題及AC程式碼)ACMC程式
- 二進位制 (小白進軍程式設計師)程式設計師
- 2019年第二屆全國大學生大資料技能競賽通知大資料
- 第二屆“重科杯”重慶科技大學程式設計競賽(同步賽)ptlks的題解(2024.5.18)程式設計
- 九州信泰杯 第十一屆山東省網路安全技能大賽
- 華中農業大學第十三屆程式設計競賽 題解程式設計
- 北京資訊科技大學第十一屆程式設計競賽(重現賽)I程式設計
- 中國計量大學現代科技學院第四屆“中競杯”程式設計校賽(同步賽) F.爬塔(DP)程式設計
- 方格分割 二進位制列舉+DFS(2017 第八屆藍橋杯省賽A組 第4題)
- 湖南大學2020屆ACM新生賽 部分題解ACM
- 大學生電子設計競賽電源資料
- 資料競賽:第四屆工業大資料競賽-虛擬測量大資料
- 第十五屆浙江大學寧波理工學院程式設計大賽(同步賽)程式設計
- 2020年“感恩杯”台州學院第十三屆大學生程式設計競賽D、H、I題解(後續補充)程式設計
- 10.5組隊訓練賽-2024CCPC山東省賽
- 第十七屆中國計量大學程式設計競賽 I- Isolated Pointset程式設計
- 2020年廣東工業大學第十屆文遠知行杯新生程式設計競賽 A.肥豬的鋼琴床(dp動態規劃)程式設計動態規劃
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- QZEZ第一屆“飯吉圓”杯程式設計競賽程式設計
- 2024CCPC山東省賽補題記錄
- M-災難預警-浙江農林大學第十九屆程式設計競賽暨天梯賽選拔賽程式設計
- 第十四屆全國大學生資訊保安競賽——創新實踐能力賽(東北賽區)比賽圓滿落幕