湖南大學新生賽C,G,J題解
阿新 • • 發佈:2019-01-06
C:
思路:做幾組資料就基本能發現規律,奇數為-1,偶數為1
程式碼:
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int main() { long long int a; scanf("%lld",&a); if(a%2==0) { cout<<1<<endl; } else { cout<<"-1"<<endl; } return 0; }
G:
求四個數的和,數的範圍是-2e61到2e61,用c++學了幾個沒過,就直接換無腦JAVA吧
程式碼:
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int T = cin.nextInt(); while (T-- > 0) { BigInteger a; BigInteger b; BigInteger c; BigInteger d; a = cin.nextBigInteger(); b = cin.nextBigInteger(); c=cin.nextBigInteger(); d=cin.nextBigInteger(); System.out.println(d.add(c.add(a.add(b)))); } } }
J:看明白遞迴程式,換一種寫法即可
程式碼:
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define MAX 100005 using namespace std; long long int a[100005]; int main() { int n; a[0]=1; a[1]=1; a[2]=3; cin>>n; for(int t=3;t<100005;t++) { a[t]=(t*a[t-1]+(t-1)*a[t-2])%1000000007; } printf("%lld\n",a[n]); return 0; }