感覺就是很難的那種題;
網上搜不到題解;
自己又笨;
只能到處問大神;
我直接說思路了;
顯然的,我們發現暴力很萎;
雖然可以剪枝,但太複雜;
我們就列舉最後一位,因為最後一位一定不會進製,所以我們就可以得出所有的數字了;
然後是輪換排列,所以每個位子上會每個數會出現一次;
那我們把列舉最後一位時所得到的一組數字加起來;
這個值再乘以11111..;
我們就得到了把輪換的那幾個數字全部加起來所的的結果;
比如:
142857+428571+285714+…=(1+4+2+8+5+7)*111111
然後我們可以判斷一下這個結果能否整除(1+2+…+m)
可以整除的話那我們就得到乙個解,再判斷一下這個解的各位數字是不是原來算出來的那組數字;
是的話就是了;
關於進製的問題瞎搞就好啦;
比如那個111111是n進製的;
#include
#define ll long long
using namespace std;
ll n,m,a[20],q[20],tot;
bool b[20];
char s[26]="0123456789abcdef";
ll turn(ll x)
return ans;
}void pd(ll x)
y=1;
for(int i=1;i
*10+1;
y=turn(y)*sum;
if(y%(m
*(m+1)/2))return;
y/=m*(m+1)/2;
tot=0;
while(y)q[++tot]=y%n,y/=n;
if(tot!=m)return;
for(int i=1;i<=m;i++)
if(!p)return;
}while(tot)cout<
}int main()
{ cin>>n>>m;
for(int i=1;i話說陽哥的**又快又小又短
神奇六位數
有乙個6位的正整數,它有個很神奇的性質 分別用2 3 4 5 6去乘它,得到的仍然是6位數,並且乘積中所包含的數字與這個6位數完全一樣!只不過是它們的順序重新排列了而已。請計算出這個6位數。這是乙個整數,請通過瀏覽器提交答案,不要填寫任何多餘的內容 比如說明性的文字 142857 include i...
VS2013產生隨機六位數
完整 include include includevoid main 很多教程裡會說要包含標頭檔案 include include include 但我在做乙個mfc的伺服器,沒用該標頭檔案也生成了隨機的六位數。srand time 0 srand函式是隨機 發生器的初始化 函式,srand函式在...
很有趣的求六位數的題
有乙個六位數,它的二倍 三倍 四倍 五倍 六倍還是六位數,並且它們的數字和原來的六位數的數字完全相同只是排列的順序不一樣,求這個六位數 寫的是這道題,結果是142857。ps.這真的是小學生寫的作業嗎?如下 public class aaaa static boolean can int a,int...