import java.util.Scanner;
public class Main {
private int[]arrays;//用于存放輸入的整數
private int number;//記錄個數
//初始化
public Main(int n)
{
number=n;
arrays=new int[number];
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Main mm=new Main(n);
for(int i=0;i<n;i++)
{
mm.arrays[i]=sc.nextInt();
}
mm.judge();
}
//判斷是否是相鄰數
public void judge()
{
int count=0;//變量count主要用來記錄零的個數
//通過選擇排序,使數組有序
for(int i=0;i<number-1;i++)
for(int j=i+1;j<number;j++)
{
if(arrays[i]>arrays[j])
{
int temp=arrays[i];
arrays[i]=arrays[j];
arrays[j]=temp;
}
}
//記錄0的個數
while(arrays[count]==0)
{
count++;
}
//從非零的索引算起,後一個如果比前一個大一,那麼就不減,多于1開始用零來替換
for(int i=count;i<number-1;i++)
{
count-=arrays[i+1]-arrays[i]-1;
}
//給出結論
if(count>=0)
System.out.println("Yes");
else
System.out.println("No");
}
}
1.連續相鄰
時限:1000ms 記憶體限制:10000K 總時限:1000ms
描述:
給定一個由n個整數組成的數列,數列中元素取值為(0,65535)之間的整數,相同數值不會重複出現,0是一個例外,可以反複出現,并且可以通配任意一個整數,判斷這個數列是否亂序相鄰(經過排序後相鄰數字之差均為1就認為是亂序相鄰)。
輸入:
第一行為一個整數n,表示數列中整數的個數;第二行為n(n不超過10000)個整數。
輸出:
輸出占一行,如果此數列亂序相鄰,輸出Yes,否則輸出No。
輸入樣例:
5
8 7 5 0 6
輸出樣例:
Yes
提示:
對于上面的輸入例子,0可以通配4或者9,這樣數列是亂序相鄰的,是以輸出Yes。思考比盲目行動來的更重要,更有結果。
2.
連寫數
時限:1000ms 記憶體限制:10000K 總時限:3000ms
描述:
從1開始按正整數的順序不間斷連續寫下去123456789101112……,所成的整數稱為連寫數。要是連寫數1234……m能被整數n整除,m至少為多大?
輸入:
一個整數n,n在(0,32768)之間。
輸出:
輸出占一行,滿足條件的最小m的值。
輸入樣例:
5
1999
輸出樣例:
5
4166
提示:
對于上面的輸入例子,5對應的連寫數為12345,是以m的最小值為5;對于1999對應的連寫數為1234……4166,是一個15557位的超大數字。
/*連寫數問題*/
import java.util.Scanner;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
find(n);
}
/*該問題的難點是怎樣儲存資料,如果将這麼長的資料整個存儲下來是不可能的
* ,是以,如果每次用除下來的餘數和後面的數來累積,就可以存儲了。
* */
public static void find(int n)
{
int index=2;
int sum=1;
while(!(sum%n==0))
{
String ssum=sum%n+""+index;
sum=Integer.valueOf(ssum);
index++;
}
System.out.println(index-1);
}
}