#include<bits/stdc++.h>
using namespace std;
typedef __int128 ll;
int main()
{
int n,t;
cin>>n>>t;
ll m = t;
vector<pair<int,int>>a(n);
for(auto& [x,y]:a){
cin>>x>>y;
m-=x;
}
if(m<=0){
cout<<"0\n";
return 0;
}
ll l=0,r=1e18+1;
ll res=0;
auto check=[&](ll mid){
__int128 w = 0;
for(auto& [x,y]:a){
w+=mid/y*x;
}
if(w>=m)return true;
return false;
};
while(l<=r){
ll mid = (l+r)/2;
if(check(mid)){
res=mid;
r=mid-1;
} else{
l=mid+1;
}
}
cout<<(long long)res<<"\n";
return 0;
}
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <set>
#include <string>
using namespace std;
typedef long long LL;
const int N = 110;
int a[] = {0, 2, 8, 8, 18, 18, 32, 32};
int main(){
int T;
cin >> T;
while (T -- ){
int x;
cin >> x;
for (int i = 1; i <= 7; i ++ ){
if (x <= a[i]){
cout << i << endl;
break;
}
x -= a[i];
}
}
return 0;
}
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
#define int long long
const int N=2e5+5,M=8e5+5;
typedef pair<int,int> pii;
int n,m,x;
int h[N],e[M],ne[M],w[M],idx;
int d[N];
bool v[N];
void add(int a,int b,int c)
{
w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs()
{
memset(d,0x3f,sizeof d);
d[1]=0;
priority_queue<pii,vector<pii>,greater<pii>>Q;
Q.push({0,1});
while(Q.size())
{
auto t=Q.top();
Q.pop();
int id=t.second;
if(v[id]) continue;
v[id]=1;
for(int i=h[id];~i;i=ne[i])
{
int j=e[i];
if(d[j]>d[id]+w[i])
{
d[j]=d[id]+w[i];
Q.push({d[j],j});
}
}
}
}
signed main()
{
cin>>n>>m>>x;
memset(h,-1,sizeof h);
for(int i=1;i<=m;i++)
{
int a,b,c;
cin>>a>>b>>c;
add(a,b+n,c+x);
add(a+n,b,c);
add(b,a+n,c+x);
add(b+n,a,c);
}
dfs();
cout<<min(d[n],d[2*n]);
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int gcd(int a, int b){
return b ? gcd(b, a % b) : a;
}
int a, b, c;
vector<int> res;
int main(){
int T;
cin >> T;
while (T -- ){
cin >> a >> b >> c;
if (a == b && b == c){
cout << -1 << endl;
continue;
}
res.clear();
int n = b - a, m = c - b;
int x = gcd(abs(n), abs(m));
for (int i = 1; i <= x / i; i ++ )
if (x % i == 0){
res.push_back(i);
if (x / i != i) res.push_back(x / i);
}
sort(res.begin(), res.end());
for (auto x : res)
cout << x << ' ';
cout << endl;
}
return 0;
}
第一题那么大吗1e18
对的,题解上就是这么写的