數字分組(NOIP1998初中組複賽第一題)

時間 2025-05-25 09:25:18

1樓:網友

首先從個位數來考慮:

5,**0(1-9中沒有0,捨去)

簡單的說:三個三位數的尾數要滿足的應該是。

1,2,3或2,4,6或3,6,9或4,8,2或6,2,8或7,4,1或8,6,4或9,8,7……(

接下來就是乙個乙個考率了:

對於1,2,3.它的十位數也應該滿足模態迅(*)但是應該沒有1,2,3這些數字)

剩下旦此8,6,4或9,8,7分別代入一下,明顯是不行的。

對於2,4,6它的十位數也要滿足(*)但是沒有2,4,6三個數字。

741或是987,分別代入就得到:192,384,576對於3,6,9.它的閉搏十位數滿足(*)不包含369)246或741,分別帶入得到:

273,546,819***到這裡為止三個用的是同樣道理。

對於4,8,12≈4,8,2的。

它的十位數應該是第三個的十位數-1,然後三個數的十位數也會滿足(*)並且不包含482三個數字,接下去也是同樣的道理:

經過一番計算後就可以得到滿足條件的數字分別是:

2樓:網友

設這三個數為x,2x,3x。此備前則x+2x+3x≡1+2+……9≡0(mod9)所以9整除6x,3整除的數字和為9或18.

若為9,則3x=612,621,531,513,423,432,342,324,315,351.經檢驗無符合條件的數。

若為18,則3x=981,972,963,954,945,936,927,918,891,873,864,846,837,819,792,783,765,756,738,729,693,684,675,657,648,639,594,576,567,549,495,486,468,459,396,387,378,369.經檢驗981,滾悶819,576,657符合條件。

所森清以共有4組:327,654,981;273,546,819;219,438,657;192,384,576.

noip98 連線多位數

3樓:

這是一道另類的排序問題。

排序的依據是:a後接b比b後接a大,就說"a>b"

如果是競賽的話,估計需要用堆才能使時間滿足要求。

**如下:#include

struct heap // 完成程式的堆int *m_nelements;

int m_nmaxsize, m_nsize;

// 初始化堆。

heap::heap(int n)

判斷資料a是否比資料b更優。

bool betterthan(int a, int b)// 獲得堆的某個結點的較優的子結點。

新增乙個值。

data;}}

刪除最大值。

ndata;}}

int main()

for (i = 0; i < n; i++)return 0;}

4樓:網友

[分析]

這是一道比較成功的題目。

極易想到的演算法是貪心法 - 按整數對應的字串大到小連線,因為題目的例子都符合,但是不難找到反例:

12 121 應該組成12121而非12112,那麼是不是相互包含的時候就從小到大呢?也不一定,如:

12 123 就是12312而非12112,那麼情況就多了。其實本題就是用貪心法,但是貪心標準不是上述那種,而是:

如果a後接b比b後接a大,就說"a>b"。直接輸出排序結果。正確性容易證明,大家自己試試。

pascal**,比較容易讀懂的:

vars:array[1..20] of string;

t:string;

i,j,k,n:longint;

beginwrite('n=');

readln(n);

for i:=1 to n do

beginread(k);

str(k,s[i]);

end;readln;

for i:=1 to n-1 do

for j:=i+1 to n do

if s[i]+s[j]begin

t:=s[i];

s[i]:=s[j];

s[j]:=t;

end;for i:=1 to n do

write(s[i]);

writeln;

end.

noip1998.連線多位數

5樓:匿名使用者

乙個簡單的排列問題。

先全排列一遍 然後比較並枝豎 結束。

可以直搭兄接用字絕大符串比較。

noip2015普及組複賽第一題

6樓:網友

你別這樣用檔案,因為這是競賽試題。

所以直接用freopen讀取檔案會更好。

這樣就可以直接用cin,cout

你可以先改了再來試一試程式。

如果不改檔案的話。

你先把fscanf前面的int day後面的都好改成分號。

noip2010提高組複賽第一題(被大牛們稱為水題)不會做!

7樓:俠盜機密

模擬法就可以了,開個陣列,在紙上寫寫畫畫,找個簡單的規律,就可以了。

8樓:網友

直接模擬啊,我是普及組的,第一題都很水啦,用個陣列記錄下記憶體的。

9樓:匿名使用者

第一題確實有點水,只要個陣列就搞定了。

10樓:清爽又勤懇灬小白楊

用hash維護是否在隊中。

不要忘了出對。

從左往右搜。

對大神來說4題都是水題。

下面是神牛a對b的話:你們最後一題怎麼用o(n*n*n)演算法 直接o(n*n)搞定。

我連第3題寫了並查集都a不掉。。。

noip資料太弱了 這麼好拿分 400分表示沒有壓力 noip貼吧直播虐人。

賽前裝若攢rp 賽後虐菜+rp 鄙視這種牛。

火車問題

11樓:資深天使投資人

分析:設up[i]為i站的上車人數、down[i]為i站的落車人數、p[i]為i站開出時車上的人數(1≤i≤n)。初始時up[1]=p[1]=a,down[1]=0。

依次列舉第2站的上車人數為1,2,……

設第2站的上車人胡明兆數為褲租k

up[2]=down[2]=k,p[2]=p[1]+up[2]-down[2]=a

按照下式遞推第3站…第n-1站的車上人數。

up[i]=up[i-1]+up[i-2]

down[i]=up[i-1]

p[i]=p[i-1]+up[i]-down[i]=p[i-1]+up[i-2] (3≤i≤n-1)

計算從x站開出時車上的人數。

若p[n-1]=m,則輸出p[x];否則k←k+1,返回①…,直至p[n-1]>m為止。因為p相對k是遞增的,因此在當前p[n-1]>m的情況下,無論k值怎樣增加也不會使得p[n-1]=m的。

源程式如下:

const maxn=100

var a,n,m,x ,k,i:integer;

p,down,up:array[1..maxn] of integer;

beginreadln(a,n,m,x);

fillchar(p,sizeof(p),0);

up[1]:=a;down[1] :0;p[1] :a;

k:=1;n:=n-1;

repeat

up[2]:=k;down[2]:=k;p[2]:=p[1];

for i:=3 to n do begin

up[i] :up[i-1]+up[i-2];

down[i] :up[i-1];

p[i] :p[i-1]+up[i-2];

end;if p[n]=m then

beginwriteln(p[x]);

readln;

exit;end;k:=k+1;

until p[n]>m;

writeln('槐乎no answer.')

end.

noip2007複賽提高組第一題答案

12樓:網友

#include

#include

#define len 200000

int a[len],temp,mid;

int sort(int *a,int low,int high) /一趟快排。

mid=a[low];

while (low=mid) high--;

temp=a[low];a[low]=a[high];a[high]=temp;

while (lowtemp=a[low];a[low]=a[high];a[high]=temp;

return low;

void quicksort(int *a,int low,int high) /快排遞迴。

int mid;

if (low < high)

mid=sort(a,low,high);

quicksort(a,low,mid-1);

quicksort(a,mid+1,high);

int main()

file *fp;

int i,j,n,sum;

fp=fopen("","r");

fscanf(fp,"%d",&n);

for (i=0;ifscanf(fp,"%d",&a[i]);

fclose(fp);

quicksort(a,0,n-1); 呼叫快排。

fp=fopen("","w");

for (i=sum=0;iif (a[i+1]!=a[i]) sum++;

for (n=1,i=0,j=0;iwhile (a[j+1]==a[j])

fprintf(fp,"%d %d",a[j],n);

printf("%d %d",a[j],n);

n=1;fclose(fp);

return 1;

system("pause");

100%正確,後面有註釋!

noip2012普及組複賽第4題文化之旅

13樓:yoki颯

1、最優性剪枝 (ans < nowdist + mindist)(nowdist當前走過的路程,mindist至少還要走多遠).

2、刪去所有影響終點的城市(不可能走到的……)3、倒搜。

說實話給 pj 組的寫 std 時是這麼寫的……ac過了。

雖然怎麼說倒搜似乎有些說不過。

另把倒搜換成下面的剪枝也是可以過的。

設定乙個x,從終點向外拓展x層。

每走乙個城市看是否這x層中的任意一層被封鎖。

上述的確有些鬱悶,因為x取小作用不大,取大又降低了程式執行速度。

可以考慮將所有拓展層全部求出來。每層跳躍一次。

100個點的圖如果想卡人的話,層數不會太多的,最多10層左右。

不過後面的沒有實現了。std x 取1就可以過。

程式在學校的說……明天中午發過來》_<

noip 2010 c++提高組 複賽第一題 :機器翻譯 要求:**+註釋+演算法分析

14樓:匿名使用者

#include

using namespace std;

int main()

bool f=false;//

int t,i,j,n,z=1,l=1,x=1,m;

int b[1005]={記憶體。

cin>>n>>m;

cin>>t;

b[1]=t;

for(i=2;i<=m;i++)

cin>>t;//輸搭尺入單詞。

for(j=1;j<=l;j++)

if(b[j]==t)

break;//內差枝譽存中有這個單詞。

if(j==l+1)//沒有這個單詞。

x++;if(!f)

z++;l++;

if(l==n)

f=true;

b[z]=t;

elsez++;

if(z==n+1)

z=1;b[z]=t;

for(j=1;j<=n;j++)

cout《虛段coutreturn 0;

數字1 9代表什麼意思,1 9代表什麼意思呀?

1.一元開泰。2.好事成雙。3.生生不息。4.四平八穩。5.如日中天。6.三教九流。7.大起大落。8.四平八穩。9.道法自然。0一個簡單的圓圈,起點就是終點,終點即為起點。1 按照中國古代哲學,最初一切開始於 太極 然後由太極生太一,太一生陰陽,陰陽生五行,五行生萬物。2 在中國古代數字學中,2是偶...

19e數字便民可靠嗎?有人在使用19E數字便民嗎?感覺怎麼樣 希望真實!謝謝!

可靠,有許可證還在公安局備案的。安全是可靠,但是技術跟不上,有時候顯示元以下的話費充不了,有時候甚至連的都顯示系統繁忙,請梢後再試,有時候又是交易失敗,為此我的很多老顧客都不來交費了,很是窩火,準備退掉了,才用來天。實在沒別的系統可用的話,可以考慮用e,因為它經常會衝不到帳,又退不了錢,顧客會和你吵...

用1 9這數字構成的無重複數字的九位數中,有且只有偶數相鄰的九位數有幾個

老黃知識共享 1 9中有4個偶數2,4,6,8 1 9中有5個奇數1,3,5,7,9 五個奇數有5x4x3x2 120種排列 5個奇數形成5 1 6個間隔,包括頭尾 6個間隔取3個用來插入資料,有間有6x5x4 120種取法在5個奇數的間隔中,取出三個間隔來插入資料一共有120x120 14400種...