1.HDU - 6225 https://vjudge.net/contest/329277#problem/A
题意:
给出四个数(小于等于!!!2^62 !!!),输出这四个数的和
题解:
队友因为long long wa了一发,我因为unsigned long long wa了一发。
最后用unsigned long long + 四个如果都是2^62必须手动输出2^64过了
记住! long long的数据范围是2^63-1 unsigned long long 的数据范围是2^64-1
代码:
#include <cstdio> #include <iostream> #define ll unsigned long long using namespace std; ll a[5]; int main() { int t; cin>>t; while(t--) { ll ans = 0,cnt = 0 ; for(int i=0;i<4;i++){ cin>>a[i]; ans += a[i]; if(a[i] == 4611686018427387904){ cnt++; } } if(cnt == 4){ cout<<"18446744073709551616"<<endl; continue ; } cout<<ans<<endl; } return 0; }
2.HDU - 6227 https://vjudge.net/contest/329506#problem/B
题意:
给出n只兔子当前的位置,每只兔子可以跳到其余的任意俩只兔子的位置中间(仅当那俩只兔子之间的距离大于1),一个位置仅能有一只兔子,问你兔子最多可以跳多少次。
题解:
直接考虑最前面的兔子和最后的兔子,可以想象,最后肯定是所有的兔子在连续的位置才不能存在可以跳动的兔子
代码:
#include <cstdio> #include <iostream> #define ll long long using namespace std; ll a[505],pre[505]; int main() { int t,n; cin>>t; while(t--) { ll ans = 0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; if(i >= 2) pre[i] = a[i] - a[i-1]; } ll maxx = max(pre[2],pre[n]); for(int i=3;i<n;i++){ if(pre[i] >= 2) ans += pre[i]-1; } if(maxx >= 2){ cout<<ans + maxx -1<<endl; continue ; } cout<<ans<<endl; } return 0; }
3.HDU - 6222 https://vjudge.net/contest/329506#problem/C
题意:
已知一种三角形符合 n-1 ,n,n+1是三角形的三条边而且三角形的面积是整数!给你一个小于等于10^30的数字m,问你第一个大于等于m且符合m-1,m,m+1的三角形的m
题意:
打表已知三角形的三条边求面积公式,找规律,发现序列是4,14,52,194,724,2702,10084;
满足ai = 4*ai-1 - ai-2 ,用java大数直接写
打表代码:
#include <cstdio> #include <iostream> #include <cmath> #define ll long long using namespace std; int main() { int t,n; for(int i=4;i<=30000;i++) { double a = i-1; double b = i; double c = i+1; double cosA = (double)(b*b + c*c - a*a)/(2*b*c); double sinA = (double)sqrt(1 - cosA*cosA); double S = (double)b*c*sinA/2; int s = (int)S; if(S - s <= 1e-1000){ cout<<i<<endl; } } return 0; }
4.HDU - 6223 https://vjudge.net/contest/329506#problem/J
##题意 :