您好,欢迎访问一九零五行业门户网

Codeforces Round #262 (Div. 2)-A,B,C,D_html/css_WEB-ITnose

a. vasya and socks
水题就不用多说了,直接暴力枚举就完事了。
#include #include#include#include#include#include#includeusing namespace std;#define ll __int64int main(){ int n,k; while(~scanf(%d%d,&n,&k)) { int m=n; int ans=n; int yu=0; while(m) { m=m+yu; yu=m%k; m=m/k; ans+=m; } cout
b. little dima and equation
也不用说,水题一个,直接枚举s(x),然后得到x,然后根据x推出s(x)是不是合适。
当时把81写成了72,不由的十分悲伤,sad.
#include #include#include#include#include#include#includeusing namespace std;#define ll __int64#define inf 1000000000vectorvec;ll pows(ll x,ll y){ ll ans=1; while(y--)ans=ans*x; return ans;}int dus(ll x){ int ans=0; while(x) { ans=ans+x%10; x=x/10; } return ans;}int main(){ int n,k; int a,b,c; while(~scanf(%d%d%d,&a,&b,&c)) { ll ans=0; vec.clear(); for(int i=1;i=inf)break; if(ans
c. present
二分+贪心。也是一种水题的表现形式。。。。
二分一下结果,贪心看当前结果能不能达到。
#include #include#include#include#include#include#includeusing namespace std;#define ll __int64#define inf 1000000000#define maxn 220000ll a[maxn];ll b[maxn];ll flag[maxn];ll n,w;ll qiu(ll x){ memset(flag,0,sizeof(flag)); for(ll i=1;im)r=mid; else l=mid+1; mid=(l+r)/2; } mid--; cout
d. little victor and set
写这个题的时候要多悲剧有多悲剧,竟然在我认为最不可能错的地方写错了。
我很悲伤.
n=r-l+1;
若n
若k
当k=1时,很明显取l。
当k=2时,很明显取两个相邻的,并且只有末位不同的数,他们的异或结果为1.
当k=3时,第一个数取l,然后假如结果为0,算出剩下两个数的最小值。如果两个数最大的
不大于r,那我们就取这三个数,否则取两个数使得结果为1.
当k>=4时:
对于下面两个数交替处:
..........0111110                  k-2
..........0111111                  k-1
..........1000000                  k
..........1000001                  k+1
很明显我们可以看出来k-2,k-1,k,k+1的异或值为0。
因为n>20,我们一定能找出这种k。
#include #include#include#include#include#include#includeusing namespace std;#define ll __int64#define inf 1000000000#define maxn 220000void dos1(ll l,ll r,ll k){ ll n=r-l+1; ll st=((ll)1)k)continue; if(res>ans) { res=ans; rst=i; } } len=0; for(ll i=0; i=0; i--) { if((l&(((ll)1)>i); n=(n=l&&k+1r)return dos2(l,k-1,ks); } } return 0;}void dos3(ll l,ll r,ll k){ if(k==1) { cout=0; i--) { if(l&(((ll)1)

其它类似信息

推荐信息