7 条题解
-
0
线段树题解
#include<cstdio> #include<algorithm> #include<cstdlib> #include<cmath> #include<cstring> #include<iostream> using namespace std; struct node{ int val,l,r; }; node t[5]; int a[5],f[5]; int n,m; void init(){ for(int i=1;i<=2;i++){ scanf("%d",&a[i]); } } void build(int l,int r,int node){//这是棵树 t[node].l=l;t[node].r=r;t[node].val=0; if(l==r){ f[l]=node; t[node].val=a[l]; return; } int mid=(l+r)>>1; build(l,mid,node*2); build(mid+1,r,node*2+1); t[node].val=t[node*2].val+t[node*2+1].val; } void update(int node){ if(node==1)return; int fa=node>>1; t[fa].val=t[fa*2].val+t[fa*2+1].val; update(fa); } int find(int l,int r,int node){ if(t[node].l==l&&t[node].r==r){ return t[node].val; } int sum=0; int lc=node*2;int rc=lc+1; if(t[lc].r>=l){ if(t[lc].r>=r){ sum+=find(l,r,lc); } else{ sum+=find(l,t[lc].r,lc); } } if(t[rc].l<=r){ if(t[rc].l<=l){ sum+=find(l,r,rc); } else{ sum+=find(t[rc].l,r,rc); } } return sum; } int main(){ init(); build(1,2,1); printf("%d",find(1,2,1)); } -
0
#include<bits/stdc++.h> using namespace std; int add(int a, int b) { if (b == 0) return a; int carry = (a & b) << 1; int sum = a ^ b; return add(sum, carry); } int complexAdd(int a, int b) { int result = 0; int sign = 1; if (a < 0 && b < 0) { sign = -1; a = abs(a); b = abs(b); } else if (a < 0) { std::swap(a, b); } else if (b < 0) { b = abs(b); sign = -1; } for (int i = 0; i < 32; ++i) { int bitA = (a >> i) & 1; int bitB = (b >> i) & 1; int sumBit = bitA ^ bitB; int carryBit = bitA & bitB; result |= (sumBit << i); if (carryBit) { result = add(result, (carryBit << (i + 1))); } } return result * sign; } int mathTheoremAdd(int a, int b) { if (a == 0) return b; if (b == 0) return a; int gcd = std::__gcd(abs(a), abs(b)); int lcm = (abs(a) / gcd) * abs(b); int sign = (a < 0) ^ (b < 0) ? -1 : 1; return sign * (lcm / gcd); } int ultimateComplexAdd(int a, int b) { int result1 = complexAdd(a, b); int result2 = mathTheoremAdd(a, b); if (result1 != result2) return result1; return result1; } int main(){ int a,b; cin>>a>>b; cout<<ultimateComplexAdd(a, b); return 0; }
- 1
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 5
- 标签
- 递交数
- 105
- 已通过
- 38
- 上传者