此題還有乙個測試點沒過
兩個坑:
1,用long防止溢位兩個10的九次方相乘會溢位。
2.執行超時問題要判斷。我這個判斷不行。
要用第二個**,首先將輸入的數字進行sort排序,從小到大。
然後設定i,j記錄符合的陣列位置,count記錄符合要求的中間數字
的多少,初始為0,i從0~n,j從i+count開始,找到符合要求的j
時(m≤mp),計算j-i+1與count的大小,比count大就進行更新。
下一次計算時,j直接從i+count開始,因為必然要滿足統計
的j-i+1要大於count才會記錄,因此這裡很巧妙,避免了還
從j=i+1開始計算。最後輸出count。
注意p是10^9,因此用int儲存不了,直接都用long int比較好。
#includeusing namespace std;
int main()
}printf("%d",max);
} //pat1030v1
#include #include #include using namespace std;
int main()
} printf("%d",count);
return 0;
}參照**二,修改我的
#includeusing namespace std;
int main()
// cnt=0;
// num=a[i]*p;//不改long long這裡會出錯
// int j=i+cnt;
// for(j;a[j]<=num && j<=n-1 && maxmax)
//
}printf("%d",cnt);
}
PAT乙級1030 完美數列
這道題我只用了一次遍歷,遺憾的是最後乙個測試點無法通過,看到有人說最後乙個測試點是大數問題,改了資料型別仍然不行,心累。由於涉及最大最小問題,先對整個陣列排序。從第乙個元素開始標記,對以後的每個元素進行條件判斷,當不滿足題目條件,對標記 1,記錄此時的資料個數,同時遍歷並不需要暫停。這樣遍歷完成後有...
PAT 乙級 1030 完美數列
時間限制 300 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 cao,peng 給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個...
PAT乙級1030完美數列
題目描述 給定乙個正整數數列,和正整數 p,設這個數列中的最大值是 m,最小值是 m,如果 m mp,則稱這個數列是完美數列。現在給定引數 p 和一些正整數,請你從中選擇盡可能多的數構成乙個完美數列。輸入格式 輸入第一行給出兩個正整數 n 和 p,其中 n 10 5 是輸入的正整數的個數,p 10 ...