QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#136806#241. Chiaki Sequence Revisitedwhsyhyyh#0 0ms0kbC++141.4kb2023-08-09 11:55:472023-08-09 11:55:49

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-09 11:55:49]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:0kb
  • [2023-08-09 11:55:47]
  • 提交

answer

#pragma GCC optimize("Ofast","unroll-loops","omit-frame-pointer","inline")
#pragma GCC option("arch=native","tune=native","no-zero-upper")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2")
#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define LL long long
#define mod 1000000007
#define fi first
#define se second
#define PLL pair<LL,LL>
#define mkp make_pair
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define drep(i,r,l) for(int i=r;i>=l;i--)
using namespace std;
LL rd() {
	LL res=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-') f*=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') res=(res<<1)+(res<<3)+(ch^48),ch=getchar();
	return res*f;
}
map<LL,PLL>mp;
PLL solve(LL n) {
	if(n==0) return mkp(0,0);
	if(n==1) return mkp(1,1);
	if(mp.find(n)!=mp.end()) return mp[n];
	LL tmp=1,cnt=0;
	while(tmp*2<n) tmp*=2,cnt++;
	if(tmp*2==n) {
		PLL C=solve(n-1);
		return mkp((C.fi+cnt+2)%mod,(C.se+n%mod*(cnt+2)%mod)%mod);
	}
	PLL A=solve(tmp-1),B=solve(n-tmp);
	return mp[n]=mkp((A.fi+B.fi+cnt+1)%mod,(A.se+tmp%mod*B.fi%mod+tmp%mod*(cnt+1)%mod+B.se)%mod);
}
int T;
LL n;
int main() {
	T=rd();
	while(T--) {
		n=rd();
		LL l=0,now=n-1;
		drep(i,60,0) if((1ll<<(i+1))-1<=now) l+=1ll<<i,now-=(1ll<<(i+1))-1;
		PLL tmp=solve(l); 
		cout<<"FUCK "<<l<<endl;
		printf("%lld\n",(1+tmp.se+(l+1)%mod*(n%mod-1-tmp.fi+mod)%mod)%mod);
	}
	return 0;
}

详细

Test #1:

score: 0
Time Limit Exceeded

input:

100000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
1...

output:

FUCK 0
1
FUCK 1
2
FUCK 1
4
FUCK 2
6
FUCK 3
9
FUCK 3
13
FUCK 3
17
FUCK 4
21
FUCK 5
26
FUCK 5
32
FUCK 6
38
FUCK 7
45
FUCK 7
53
FUCK 7
61
FUCK 7
69
FUCK 8
77
FUCK 9
86
FUCK 9
96
FUCK 10
106
FUCK 11
117
FUCK 11
129
FUCK 11
141
FUCK 12
153
FUCK 13
166
FUCK 13
180
FUCK 14
194
FUCK 15
209
FUCK 15
225
FUCK ...

result: