乙個21位的數,每一位的21次方之和,等於該數本身,
求所有這樣的21位數
類似整數劃分,0-9這10個數,分21位數,
所有可能是c(30,9)=14307150個
驗證和是否在1e20-(1e21-1)之間,
然後再判斷和與列舉的個數是否相等。
自己寫了一發大數
o(n²)的乘法
256s才跑出來gg
最後答案只有兩個
128468643043731391252
449177399146038697307
將21位分成三段,用陣列維護,就會省不少時間
具體寫法回頭再補,眼下能做就是了qaq
粘一發自己的大數辣雞**好了
#include #include #include #include #include #include #include #include #include #include #include #include const int inf=0x3f3f3f3f;
const int mod=1e9+7;
const double eps=1e-7;
typedef long long ll;
#define vi vector#define si set#define pii pair#define pi acos(-1.0)
#define pb push_back
#define mp make_pair
#define lowbit(x) (x&(-x))
#define sci(x) scanf("%d",&(x))
#define scll(x) scanf("%lld",&(x))
#define sclf(x) scanf("%lf",&(x))
#define pri(x) printf("%d",(x))
#define rep(i,j,k) for(int i=j;i<=k;++i)
#define per(i,j,k) for(int i=j;i>=k;--i)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int maxn=2500;
struct bigint
void init(int x)
while(x);
}void init(const char s)//重點 123 4567
} int compare(const bigint &b)//位多的大
bigint operator +(const bigint &b)const
bigint operator -(const bigint &b)const//確保被減數大 差為正
bigint operator *(const bigint &b)const
bigint operator /(const int &n)const//被確保被除數大 商為正
while(ans.a[ans.len-1]==0&&ans.len>1)ans.len--;
return ans;
}ll operator %(const int &n)const
return ans;
}void cal()
}void output()
};char s[maxn];
ll t[11],cnt;
int step[10];
bigint tmp[10];
bigint low,high,ten,one,a[11],b[11],cal,ans[maxn];
void dfs(int pos,int num)
if(!(cal.compare(low)>=0&&cal.compare(high)<=0))return;
cal.cal();
for(int i=0;i<10;++i)
ans[cnt++]=cal;
return;
} if(pos<=7&&!num)return;
if(pos==9)
else
}}int main()
for(int i=1;i<21;++i)low=low*ten;
high=low;high=high*ten;high=high-one;
low.output(),high.output();
for(int j=0;j<=9;++j)
dfs(0,21);//當前位置,還剩多少個數字
for(int i=0;ians[i].output();
return 0;
}
藍橋杯 5位黑洞數
任意乙個5位數,比如 34256,把它的各位數字打亂,重新排列,可以得到乙個最大的數 65432,乙個最小的數23456。求這兩個數字的差,得 41976,把這個數字再次重複上述過程 如果不足5位,則前邊補0 如此往復,數字會落入某個迴圈圈 稱為數字黑洞 比如,剛才的數字會落入 82962,7593...
藍橋杯決賽 神奇6位數
有乙個6位的正整數,它有個很神奇的性質 分別用2 3 4 5 6去乘它,得到的仍然是6位數,並且乘積中所包含的數字與這個6位數完全一樣!只不過是它們的順序重新排列了而已。請計算出這個6位數。這是乙個整數,請通過瀏覽器提交答案,不要填寫任何多餘的內容 比如說明性的文字 include includeu...
藍橋杯 花朵數
乙個n位的十進位制正整數,如果它的每個位上的數字的n次方的和等於這個數本身,則稱其為花朵數。例如 當n 3時,153就滿足條件,因為 1 3 5 3 3 3 153,這樣的數字也被稱為水仙花數 其中,表示乘方,5 3表示5的3次方,也就是立方 當n 4時,1634滿足條件,因為 1 4 6 4 3 ...