9-數對的個數
給一個正整數的序列ai,輸出共有多少對數字的和為s.
最多有10000000個數字,數字的最大值為100000(思考如果最大為1e9)如果結果過大,就輸出對1e9+7取模之後的結果。
程式碼1(自己寫的):
#include <iostream>
#include <stdio.h>
const int maxn = 100003;
#define mod 1000000007;
using namespace std;
int num[maxn]; //儲存某個數值的個數
int main()
{
long int s,x; //s為所求數對和,x為數值
int n; //n為輸入的數值個數
long sum = 0; //數對個數
scanf("%ld%ld",&s,&n);
for(int i=1;i<=n;i++)
{
scanf("%ld",&x);
num[x]++;
}
for(int i=0;i<=s/2;i++)
{
if(i == (s-i))
{
sum = (sum+(num[i]*(num[i]-1)/2))%mod;
}
else
sum = (sum+num[i]*num[s-i])%mod;
}
printf("%ld\n",sum);
return 0;
}
程式碼2(西交wrong):
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define MOD 1000000007
using namespace std;
const int maxn = 100005;
typedef pair<int,int> P;
int main()
{
int n,s,x;
long long res=0;
cin>>n>>s;
memset(num,0,sizeof(num));
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
num[x]++; //
}
for(int i=0;i<=s/2;i++) //(a,b) a<=b
{//0 1 2 3 7 6 5 4
if(i==s-i) res=(res+1ll*num[i]*(num[i]-1)/2)%MOD;
else res=(res+1ll*num[i]*num[s-i])%MOD;
//1 1 1 1
}
cout<<res<<endl;
//sort(a+1,a+1+n);
//O(n)
//0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 //先排序,然後首尾指標同時向內掃
//| | | |
/*
for(int i=1;i<=n;i++) //暴力解法
{
if(a[i]>s) break;
for(int j=i+1;j<=n;j++) //1 2he 2 1
if(a[i]+a[j]==s) res++;
}
*/
//cout<<res%1000000007<<endl;
return 0;
}
(感謝西交wrong學長提供以上題目練習)
相關文章
- 2034 整數的個數
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- 對數
- 逆序對的數量
- 輸入一個整數,返回這個整數的位數
- 2563. 統計公平數對的數目
- 對 “C語言指標變數作為函式引數” 的個人理解C語言指標變數函式
- 統計輸入的數字為正數和負數的個數
- 對於質數的研究
- G - 逆序對的數量
- LeetCode題解(1512):好數對的數目(Python)LeetCodePython
- 求完全數個數
- 約數個數定理
- 2_n數最高層數與對應解數的證明
- 1102:與指定數字相同的數的個數(C C++)C++
- 040統計數字字元的個數字元
- 求三個數的最小公倍數
- beego 模板中對變數的對比Go變數
- 本題要求統計給定整數M和N區間內素數的個數並對它們求和。
- SpringMVC學習筆記9-靜態資源對映SpringMVC筆記
- 找0的個數
- A-B 數對
- 26.【數對】
- 深度學習之輸入通道個數、卷積核通道個數,卷積核個數、輸出通道個數的關係深度學習卷積
- HDU-1792-( 兩個互質的數線性組合最大不能表示的數和不能表示數的個數)
- 逆序對的數量 - 題解
- 788. 逆序對的數量
- 對數字孿生的思考
- 對N個數進行從大到小排序排序
- PAT-B 1021 個位數統計【對映】
- C語言輸入一個數輸出對應的值C語言
- 統計整數區間[N,M](N,M<100000)中所以非偶數的合數個數,並輸出這個數。
- 說說你對請求數和併發數的理解
- abc342D 乘積為完全平方數的對數
- 用一個巨集實現求兩個數中的最大數
- 怎樣解題|題7.5.12:因數的個數
- 求區間不同數的個數【主席樹求解】
- 利用可變長度引數定義一個函式,輸入為任意個數的數值,功能為對輸入資料求和並輸出;函式