程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Acdreamoj1115(數學思維題)

Acdreamoj1115(數學思維題)

編輯:C++入門知識

題意:1,3是完美數,如果a,b是完美數,則2+a*b+2*a+2*b,判斷給出的n是否是完美數。


解法:開始只看出來2+a*b+2*a+2*b=(a+2)*(b+2)-2,沒推出更多結論,囧。沒辦法,只能暴力將所有的完美數求出來然後查表。正解是c+2=(a+2)*(b+2);完美數都是有質因子3或5組成的(5本身除外);


自己暴力代碼:

/******************************************************
* author:xiefubao
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
//freopen ("in.txt" , "r" , stdin);
using namespace std;

#define eps 1e-8
#define zero(_) (abs(_)<=eps)
const double pi=acos(-1.0);
typedef long long LL;
const int Max=1010;
const int INF=1000000000;

LL num[Max];
int help[Max];
LL get(int l,int r)
{
    return 2*(num[l]+1)*(num[r]+1)-num[l]*num[r];
}
struct point
{
    LL ans;
    int h;
};
bool operator<(const point& a,const point& b)
{
    return a.ans>b.ans;
}
priority_queue pri;
int main()
{
    num[0]=1;
    num[1]=3;
    point p;
    p.ans=7;
    p.h=0;
    pri.push(p);
    p.ans=23;
    p.h=1;
    pri.push(p);
    for(int i=0; i

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved