1 #include<bits/stdc++.h>
2
3 using namespace std;
4
5 #define int long long
6
7 const int N = 3e5+100 ;
8
9 signed main(){
10 int T=1;
11 cin>>T;
12 while(T--){
13 int a,b,c;
14 cin>>a>>b>>c;
15 cout<<max(0ll,max(b,c)-a+1)<<" "<<max(0ll,max(a,c)-b+1)<<" "<<max(0ll,max(b,a)-c+1)<<endl;
16 }
17 return 0;
18 }
1 #include<bits/stdc++.h>
2
3 using namespace std;
4
5 #define int long long
6
7 const int N = 3e5+100 ;
8 char str[N];
9 signed main(){
10 int T=1;
11 cin>>T;
12 while(T--){
13 cin>>(str+1);
14 int len=strlen(str+1);
15 int ans=len;
16 //00
17 int s=0;
18 for(int i=len;i>=1;i--){
19 if(str[i]=='0'){
20 s++;
21 if(s>=2){
22 ans=min(ans,len-i-1);
23 break;
24 }
25 }
26 }
27
28 //25
29 int f=0;
30 for(int i=len;i>=1;i--){
31 if(str[i]=='5'){
32 f=1;
33 }
34 if(f&&str[i]=='2'){
35 ans=min(ans,len-i-1);
36 break;
37 }
38 }
39 f=0;
40 for(int i=len;i>=1;i--){
41 if(str[i]=='5'){
42 f=1;
43 }
44 if(f&&str[i]=='7'){
45 ans=min(ans,len-i-1);
46 break;
47 }
48 }
49 f=0;
50 for(int i=len;i>=1;i--){
51 if(str[i]=='0'){
52 f=1;
53 }
54 if(f&&str[i]=='5'){
55 ans=min(ans,len-i-1);
56 break;
57 }
58 }
59 cout<<ans<<endl;
60 }
61 return 0;
62 }
63 /*
64 25
65 1550
66 75
67 00
68 */
1 #include<bits/stdc++.h>
2
3 using namespace std;
4
5 #define int long long
6
7 const int N = 5e5+100 ;
8 //
9 int n,k;
10 int arr[N];
11 int check(int num){
12 int pos=0;
13 int tmp=1;
14 for(int i=k-num+2;i<=1+k;i++){
15 pos+=(arr[i]-arr[i-1])*tmp;
16 tmp++;
17 if(pos>=arr[i]){
18 return 0;
19 }
20 }
21 return 1;
22 }
23 signed main(){
24 int T=1;
25 cin>>T;
26 while(T--){
27 cin>>n>>k;
28 for(int i=1;i<=k;i++) cin>>arr[i];
29 arr[k+1]=n;
30 sort(arr+1,arr+2+k);
31 int l=0,r=k;
32 int ans=0;
33 while(l<=r){
34 int mid=(l+r)/2;
35 if(check(mid)){
36 ans=mid;
37 l=mid+1;
38 }else{
39 r=mid-1;
40 }
41 }
42 cout<<ans<<endl;
43 }
44 return 0;
45 }
46 /*
47 4 4 5 7 8 9
48 */
1 #include<bits/stdc++.h>
2
3 using namespace std;
4
5 #define int long long
6 int n;
7 set<int> s;
8 signed main(){
9 int T=1;
10 cin>>T;
11 while(T--){
12 cin>>n;
13 s.clear();
14 for(int i=1;i<=n;i++){
15 int x;
16 cin>>x;
17 s.insert(x);
18 }
19 if(s.size()==1){
20 cout<<"-1"<<'
';
21 continue;
22 }
23 int ans=1;
24 for(int i=2;i<=2e6;i++){
25 int tmp=-1;
26 int f=1;
27 for(auto j:s){
28 if(j>=0){
29 if(tmp==-1)
30 tmp=(j%i);
31 if((j%i)!=tmp){
32 f=0;
33 break;
34 }
35 }else{
36 int num=(abs(j)/i);
37 if(abs(j)%i) num++;
38 if(tmp==-1)
39 tmp=((j+num*i)%i);
40 if(((j+num*i)%i)!=tmp){
41 f=0;
42 break;
43 }
44 }
45 }
46 if(f){
47 ans=max(ans,i);
48 }
49 }
50 cout<<ans<<endl;
51 }
52 return 0;
53 }
思路2:求数值之间差的GCD
通过题意可知a[1] - a*k = a[2] - b*k = a[3] - c*k
移项就可以看出
1 #include<bits/stdc++.h>
2
3 using namespace std;
4
5 #define int long long
6
7 const int N = 5e5+100 ;
8 //
9 int n,k;
10 int arr[N];
11 vector<int> v;
12 signed main(){
13 int T=1;
14 cin>>T;
15 while(T--){
16 cin>>n;
17 v.clear();
18 for(int i=1;i<=n;i++) cin>>arr[i];
19 int t=arr[1],f=1;
20 for(int i=1;i<=n;i++){
21 if(arr[i]!=t){
22 f=0;
23 break;
24 }
25 }
26 if(f){
27 cout<<"-1"<<endl;
28 continue;
29 }
30 for(int i=1;i<=n;i++){
31 for(int j=i+1;j<=n;j++){
32 v.push_back(abs(arr[i]-arr[j]));
33 }
34 }
35 int ans=v[0];
36 for(int i=0;i<v.size();i++) ans=__gcd(ans,v[i]);
37 cout<<ans<<endl;
38 }
39 return 0;
40 }
41 /*
42 4 4 5 7 8 9
43 */
思路:枚举每个数,求出每个数与其他数的差值。接着因式分解,判断是否符合即可
1 #include<bits/stdc++.h>
2
3 using namespace std;
4 #define pb push_back
5 #define int long long
6 const int N = 2666666;
7 int n;
8 int arr[N];
9 map<int,int> mp,vis;
10
11 signed main(){
12
13 int T=1;
14 cin>>T;
15 while(T--){
16 cin>>n;
17 mp.clear();
18 int F=0;
19 for(int i=0;i<n;i++){
20 cin>>arr[i];
21 // cout<<arr[i]<<" ";
22 mp[arr[i]]++;
23 if(mp[arr[i]]>=(n/2)){
24 F=1;
25 }
26 }
27 // cout<<"fuck"<<'
';
28 if(F){
29 cout<<"-1"<<endl;
30 continue;
31 }
32 int ans=1;
33 mp.clear();vis.clear();
34 for(int i=0;i<n;i++){
35 mp.clear();
36 int s=0;
37 for(int p=0;p<n;p++){
38 if(i!=p&&arr[i]==arr[p]){
39 s++;
40 }
41 }
42 for(int j=0;j<n;j++){
43 if(i!=j){
44 int num=abs(arr[i]-arr[j]);
45 vis.clear();
46 // cout<<num<<" ";
47 for(int k=1;k<=sqrt(num);k++){
48 if(!vis[k]&&num%k==0){
49 mp[k]++;
50 vis[k]=1;
51 if(mp[k]+1>=n/2-s){
52 ans=max(ans,k);
53 }
54 if(!vis[num/k]&&num%(num/k)==0){
55 mp[num/k]++;
56 vis[num/k]=1;
57 if(mp[num/k]+1>=n/2-s){
58 ans=max(ans,num/k);
59 }
60 }
61 }
62 }
63 }
64 }
65 }
66 cout<<ans<<endl;
67 }
68 return 0;
69 }
70 /*
71
72 30
73 4
74 100 500 300 -100
75
76 */
1 #include<bits/stdc++.h>
2
3 using namespace std;
4
5 #define int long long
6
7 const int N = 5e5+100 ;
8 //
9 int n,k;
10 int arr[N];
11 vector<int> g[N],v;
12 int d[N];
13 map<int,int> mp;
14
15 signed main(){
16 int T=1;
17 cin>>T;
18 while(T--){
19 mp.clear();
20 v.clear();
21 cin>>n>>k;
22 if(n==1){
23 cout<<"0"<<endl;
24 continue;
25 }
26 for(int i=0;i<=n;i++){
27 g[i].clear();
28 d[i]=0;
29 }
30 int a,b;
31 int s=0;
32 for(int i=1;i<=n-1;i++){
33 cin>>a>>b;
34 if(!mp[a]) mp[a]=1,s++;
35 if(!mp[b]) mp[b]=1,s++;
36 g[a].push_back(b),g[b].push_back(a);
37 d[a]++,d[b]++;
38 }
39
40 for(int i=1;i<=n;i++){
41 if(d[i]==1)
42 v.push_back(i);
43 }
44 int sum=0;
45 for(int i=0;i<k;i++){
46 if(v.size()<=0) break;
47 vector<int> tmp;
48 tmp.clear();
49 sum+=v.size();
50 for(int o=0;o<v.size();o++){
51 for(int j=0;j<g[v[o]].size();j++){
52 d[g[v[o]][j]]--;
53 if(d[g[v[o]][j]]==1){
54 tmp.push_back(g[v[o]][j]);
55 }
56 }
57 }
58
59 v=tmp;
60 }
61
62 cout<<n-sum<<endl;
63 }
64 return 0;
65 }
66 /*
67
68 */