30分求调,史山代码,玄关
查看原帖
30分求调,史山代码,玄关
926286
Andlewzheyao楼主2025/8/2 14:56
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define el "\n"
const ll N = 2e5 + 10;
ll n = 0, a[N] = {};
string ans = "1";
struct node{
	string l, r;
}nums[N];
string cheng(string s,string t){
 	int a[10005]={},b[10005]={},c[10005]={};
	for(int i=0;i<s.size();i++)a[1+i]=s[s.size()-1-i]-'0';
 	for(int i=0;i<t.size();i++)b[1+i]=t[t.size()-1-i]-'0';
 	a[0]=s.size();
 	b[0]=t.size();
	int	maxn=a[0]+b[0];
	for(int i=1;i<=a[0];i++)for(int j=1;j<=b[0];j++)c[i+j-1]+=a[i]*b[j];
	for(int i=1;i<=maxn;i++){
 		c[i+1]+=c[i]/10;
 		c[i]%=10;
 	}
 	c[0]=maxn;
 	while(c[c[0]]==0&&c[0]>1)c[0]--;
 	string res;
 	for(int i=c[0];i>=1;i--)res=res+char(c[i]+'0');
	return res;
 }
void chu(string s, int chushu) {
	int maxn = 10010; 
	int a[maxn],c[maxn];
    long long x=0;
    int n=s.length();
    for(int i=0;i<n;i++) 
        a[i+1]=s[i]-'0';
    for(int i=1;i<=n;i++){ 
        x=x*10+a[i]; 
        c[i]= x / chushu; 
        x%=chushu; 
    }
    int lenc=1;
    while(c[lenc]==0&&lenc<n) lenc++;
    for(int i=lenc;i<=n;i++)
        cout<<c[i];
} 
int scmp(string s,string t){
 	if(s==t)return 0;
 	else if(s.size()<t.size()||s.size()==t.size()&&s<t)return -1;
 	else return 1;
}
bool cmp(node aa,node bb)
{
    string ans1 = cheng(aa.l, aa.r);
    string ans2 = cheng(bb.l, bb.r);
    return scmp(ans1, ans2) == 1;
}
//vector<ll> v;
void solve() {
	cin >> n;
	cin >> nums[1].l >> nums[1].r; 
	for (ll i = 2; i <= n + 1; i++) {
		cin >> nums[i].l >> nums[i].r;
	}
	sort(nums + 1, nums + n + 1, cmp);
	for (ll i = 1; i <= n; i++) {
		ans = cheng(ans, nums[i].l);
	}
	int chushu = stoi(nums[n + 1].r);
	chu(ans, chushu);
}
void pre() { //预处理

}
void init() { //初始化

}
int main() {
//	freopen ("", "r", stdin);
//	freopen ("", "w", stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin.tie(0);
	int T = 1;
	pre();
	while (T--) {
		init();
		solve();
	}
	return 0;
}


2025/8/2 14:56
加载中...