1樓:匿名使用者
你可以先做一個預處理。例如說有一個a陣列,a[n]為1表示n是2的冪,否則不是
那麼你在初始化的時候a陣列整個就是全為0的
然後int p = 1;
for (int i=0; i<=31; ++i) //這裡根據你要的資料量大小決定,這裡是有符號的
ok,預處理只做了32次賦值和32次位移而已。接下來對於任意輸入的n,
你只要直接輸出a[n]。這是o(1)的
所以我認為,這是很快的一種做法
//以上是演算法方面的問題
我仔細看了你的提問之後我發現你的問題應該是在對輸入資料的處理方面。推薦你做
杭電上所有的a+b problem還有輸入輸出處理的題目(1089~1096)
例如說這一題,你應該這樣
int n;
scanf("%d", &n);
while ( n-- )
2樓:金色潛鳥
#include
int main()
return 0;
}***************==
你的輸入輸出例子有點問題。
2 應當是組數,輸出 時 怎麼 把 2 也作為 一個 資料 判斷它是否是2 的冪了?
如果確實有此要求,你就把 g 也判斷和輸出一次。
3樓:it孤鶩
acm題目吧,很簡單
#include
void main()
if(n==1) printf("1\n");
else
printf("0\n");}}
4樓:匿名使用者
bool ans(int n)
5樓:小黃鴨de壽司
淡淡的的頂頂頂頂頂的頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂
c語言問題: 輸入格式 輸入有多組資料。 每組資料兩行。 第一行包含一個正整數n(小於等於1000
6樓:匿名使用者
1、首先du開啟visual studio軟體,新建zhi一個c語言檔案dao。專
2、接著在c語言檔案的頂部匯入庫內容。
3、接著運用scanf函式接收用屬戶輸入的字串。
4、然後我們利用printf函式列印一下使用者輸入的內容。
5、執行程式以後就會彈出如下圖所示的cmd介面,我們輸入內容就會自動接收到,然後原樣輸出內容。
6、最後如果你接收其他的型別,比如整數,那麼型別就需要改變成int。
7樓:匿名使用者
#include
main()
}if (ac_same_count>0 && (ac_same_count+1) >= count/2)
printf("%d\n", ac_same);
else
printf("0\n");}
8樓:匿名使用者
這種題目一直不知道針對它的測試程式怎麼判斷結束輸入的...
#include
#include
#include
//將有二個有序數列a[first...mid]和a[mid...last]合併。
void mergearray(int a, int first, int mid, int last, int temp)
while (i <= m)
temp[k++] = a[i++];
while (j <= n)
temp[k++] = a[j++];
for (i = 0; i < k; i++)a[first + i] = temp[i];
}void mergesort_main(int a, int first, int last, int temp)
}void merge_sort(int a, int n)int main()
}k++;
}for( i=0; i
c語言如何實現輸入資料有多組
9樓:匿名使用者
|#include
void main()
while (n--)
#include
void main()}
c語言輸入多組資料和輸出對應結果
堵丹彤 有兩個問題我想說一下 第 一 你用那個while語句雖然實現不斷輸入而不斷輸出結果,但後一結果是在前一結果基礎上 累加 產生,這顯然不合理 第 二 你要實現的 輸入多組資料後對應結果最後顯示 中 多組 具體是多少呢?可以定義三個陣列分別用來儲存n m和sum,注意每次計算sum前先初始化為0...
怎樣檢查C語言輸入資料的合法性,C語言中怎樣判斷變數名的合法性?
如果是整數的話,這麼判斷就行 float num int num2 scanf f num if num int num num2 int num 如果輸入正確,將整數儲存到num2中 else printf eof 用 if scanf d x 1 判斷。scanf,fscanf 送返 正確地讀入...
求教c語言從鍵盤輸入整型資料int型編寫
風若遠去何人留 include include int main int i scanf s num printf s dbits n num,strlen num for i 0 num i i if num i 9 num i 0 cnt num i 0 for i 0 i 10 i if cn...