poj3372 candy distribution
題目:題意:n個學生圍成一圈,老師給1號學生和2號學生每人一顆糖後,然後跳過乙個學生給4號一顆糖,接著跳過兩個學生給7號一顆糖,以此類推
分析:因為n達到10^9,不能用陣列統計每個學生的狀態,更不能使用暴力,會超時。但可以在一定範圍內,寫個小程式找規律(數值過大,須採用long long不然會溢位)
#include #includeview codeusing
namespace
std;
intmain()
cout
<< "
****
"<
for(long
long i = 1; i <= n; i++)
cout
<< i << ":"
<< flag[i] <
}return0;
}
根據執行結果,可以得出只要是2^n個人,都可以分到糖果,因為是二次冪,所以可以使用二進位制判斷2:10,4:100:,8:1000,絕對不能用pow()
#include #includeview codeusing
namespace
std;
intmain()
n = n/2
; }
if(flag) cout << "
yes"
<
else cout << "no"
<}}
hdu1062 text reverse
題意簡單,字串反轉,但要注意存在多個連續空格的情況_ _abc_ _ _de_
#include #includeview code#include
using
namespace
std;
intmain()
if(flag1 == 0 && ((str[i]!='
'&&str[i-1]=='
') || str[0]!=''))
if(flag2 && ((i==len-1&&str[len-1]!='
') || (str[i]!='
'&&str[i+1]=='
')))
if(flag3)
tmp[e-s+1] = '\0'
; printf("%s
",tmp);
flag1=0
; flag2=0
; flag3=0
; }
}putchar('\n
');}
return0;
}
hdu1073 online judge
分析:將輸出的串連線成乙個整體,換行用strlen()==0判斷
對連線好的標準串和測試串比較,相等輸出ac
不等,將'\t','\n'和空格去掉在判斷生成的目標串和測試串是否相等,相等輸出pw,否則輸出wa
#include #includeview code#include
using
namespace
std;
const
int maxn=5000
;int
main()
while(gets(str) && strcmp(str,"
end")!=0
)
//cout << sstr << " " << tstr << endl;
if(strcmp(sstr,tstr)==0
)
else
tmp1[cnt1] = '\0'
;
for(int i =0; i < len2; i++)
tmp2[cnt2] = '\0'
;
//cout << tmp1 << " " << tmp2 << endl;
if(strcmp(tmp1,tmp2) == 0)//
長度不相等,刪除後內容一樣
else printf("
wrong answer\n");}}
return0;
}
第一次訓練賽 B
fzu 1575 某天,無聊的小斌叫上幾個同學玩遊戲,其中有比較笨的小興,比較傻的小雪,可愛的小霞和自以為是的小楠。他們去找聰明的小明去給他們當裁判。判定誰取得遊戲勝利。而這個遊戲是由小斌想個1到10000000的數字讓大家猜,看誰先猜中。為了防止小斌作弊,小明記錄下了遊戲的整個過程。你的任務是判斷...
第一次訓練賽 E
fzu 2123 s得到乙個數,他想知道這個數每一位上的數字的孔數之和。1,2,3,5,7這幾個數字是沒有孔的,0,4,6,9都有乙個孔,8有兩個孔。input 輸入資料的第一行為乙個數t表示資料組數。接下來t行,每行輸入乙個正整數n 1 n 1000 表示要求數字孔數之和的數。n不會有前導0。ou...
第一次訓練賽 G
fzu 1705 給定含有n個元素的多重集合s,每個元素在s中出現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。例如,s 多重集s的眾數是2,其重數為3。現在給你乙個已經排好序的集合s,讓你求出其眾數和重數。input 輸入只有一行,有乙個整數n 1 n 100 開始,表示集合s中元素個...