a - candy division gym - 101597c
題意:你有n塊糖要分給三個小朋友,要求每個小朋友分到的數量可以被n整除,任意輸出一種情況,如果不能則輸出impossible。
題解:由題意,得出n=n/x+n/y+n/z,即1=1/x+1/y+1/z,滿足此公式只有3 3 3或者2 4 4的組合。所以只要判斷n能否被3或者4整除即可。
#include#includeusing namespace std;
int main()
else if(n%3==0)
else if(n%4==0)
}}
c - leading and trailing lightoj - 1282
題意:給出n和k,求n ^ k的前三位和後三位(資料保證n^k在6位以上)。
題解:對於n 我們可以表示成10 ^ m(m為小數),n ^ k則為10 ^ (m * k),這時我們對兩邊取log10,得到k*log10(n)=k * m,k和m可以表示成整數部分和小數部分,整數部分表示位數,小數部分表示值。我們可以通過讓小數部分乘上100,來得到前3位數字。後三位快速冪取模即可。
#include#include#includeusing namespace std;
long long ksm(long long a,long long b,long long c)
return ans;
}int main()
return 0;
}
d - ehab and another construction problem codeforces - 1088a
題意:給出乙個數x,問是否存在a,b滿足①1<=a,b<=x,②a被b整除,③a*b>x,④a/b題解:x<=100,列舉即可。
e - ehab and subtraction codeforces - 1088b
題意:給你n個數,進行k次操作,每次操作輸出當前最小的非0數字x,再將序列中的非0數都減去x,若都為0則輸出0。
題解:先去重,再將這些數從小到大排序,每次輸出當前數減去前乙個數。
#include#include#includeusing namespace std;
long long a[100000+10];
int main()
sort(a+1,a+n+1);
int now=0;
for(int i=1;i<=n;i++)
if(now==k)
}for(int i=now+1;i<=k;i++)
}
f - ehab and a 2-operation task codeforces - 1088c
題意:給你一段序列,你可以執行兩種操作。1 i x 表示將前i個位置加上x,2 i x表示將前i個位置模x,問你能否在n+1次操作內序列嚴格遞增,輸出所有操作。
ps:大數不要超過1e6,否則不給你過。
#include#includeusing namespace std;
const int maxn=1e6;
int main()
printf("%d\n",n+1);
printf("2 %d 1\n",n);
printf("1 %d %d\n",n,maxn);
for(int i=1;ig - acm gym - 101597k
題意:給你乙個字串,若存在字串acm則輸出fun!,否則輸出boring…。
題解:字串的find函式
h - throwing balls into the baskets lightoj - 1317
題意:有n個人,m個籃球框,每個人投k次球,每次投中的概率是p,問最後理論上共投進多少個球。
題解:所以這題和籃筐數有什麼關係?
#include#includeusing namespace std;
int main()
return 0;
}
i - semi-prime h-numbers poj - 3292
題意:我們稱可以分成4*n+1的數為h數,其中當且僅當有兩個h數相乘得到的h數為h-質數,25=5 * 5是h-質數,而125 = 25 * 5 = 5 * 5 * 5所以不是h-質數。現在問你在n以內有多少h-質數。
題解:我們先用埃氏篩將所有h-質數篩出來,因為h-質數的倍數一定不是h-質數(肯定有很多多餘的工作),然後統計1e7+1以內的h-質數即可。
#include#includeusing namespace std;
bool p[1000000+10];
int a[1000000+10];
const int maxn=1000000+1;
int ans[1000000+10];
int sum[1000000+10];
int main()
int cnt=0;
for(int i=1; i*4+1<=maxn; i++)}}
for(int i=1;i<=cnt;i++)
else}}
for(int i=1;i<=maxn;i++)
int n;
while(scanf("%d",&n)!=eof)
}
j - goldbach`s conjecture lightoj - 1259
題意:根據哥德**猜想,任意乙個大於2的偶數都可以分成兩個質數和,現在給出乙個偶數,問有多少個質數對滿足哥德**猜想。
題解:列舉所有質數,然後驗證(n-當前質數)是否也是質數。然而我想列舉+二分結果t了(質數都篩出來了我還找他做什麼┭┮﹏┭┮)。
#include#include#include#includeusing namespace std;
bool p[20000000+10];
int a[2000000+10];
int main()}}
}int t;
scanf("%d",&t);
for(int k=1;k<=t;k++)}}
if(ans%2==0)
else
printf("case %d: %d\n",k,ans);
}}
寒假訓練1 17訓練賽J
題目大意 有n個孩子 編號號1 n 3 n 2 10 5 手拉手圍成乙個圈。按順時針方向 給出編號為i的孩子的後面兩個孩子的編號ai1,ai2 但你不清楚i後面乙個孩子的編號是ai1還是ai2 求這個圈的孩子編號的順序 以任意孩子開頭輸出一種即可 解題思路 將給出的ai1與ai2相連可以得到這個環,...
2016 1 26寒假訓練賽1
2016.1.26寒假訓練賽1 a a mathematical curiosity 按照題意,暴力列舉過去,統計結果即可 b tempter of the bone 搜尋入門題目,按最簡單的方式寫即可 c r n 1.特殊處理a和b中有乙個為0的情況,如果成立的話,結果增加4 2.其他的情況,先考...
寒假訓練賽 I題
題目鏈結 題目大意 給出乙個n和k,計算出n由k個2 p p z 相加而成,求這k個數的組合。思路 先算出n的二進位制形式,然後計算二進位製上有幾個1,記為p,並將每個是1的位置對應十進位制的數由大到小存入佇列中,p是組合成n的最小個數以及佇列的size,如果n include include in...