這題可以用中國剩餘定理(這個我不會),我用的只是從1到105逐個搜尋
[cpp]
#include
using namespace std;
int main()
小明的調查作業 nyoj 48
此題根據規模進行,可以開乙個a的陣列,每讀乙個i,
就把a【i】賦值為true,然後遍歷輸出,重複計算問題,也挺省時間的。
[cpp]
#include
#include
using namespace std;
int main()
} cout<
for(int i=1;i<=1000;i++)
if(vis[i])
cout<
cout<
return 0;
} 數的長度 nyoj 69
此題有一種很準確的方法叫斯特林(stirling)公式;
還有一種也能行,不過數太大時就不是非常準確的方法:
for(int i=1;i<=m;i++)
num += log10(i);
就是對每個乘數取對數
[cpp]
#include
#include
using namespace std;
int main()
return 0;
} 房間安排 nyoj 168
用陣列a存放第i天中每天需要的房間數,讀房間數、天數,然後找出陣列中
最大的元素#include
int p = max_element(a, a+200)-a;
cout<
[cpp]
#include
#include
#include
using namespace std;
int a[201]; //第i天的房間數
int main()
int p = max_element(a, a+200)-a;
cout<
} return 0;
} 素數 nyoj 169
主函式部分設計的很巧妙,先近後遠,距離相等的話先大後小
[cpp]
#include
using namespace std;
bool fan(int a)
} return b;
} int main()
} return 0;
}
字母統計 nyoj 241
此題類似重複計數,用乙個陣列儲存,然後用『a』+index;算是比較巧妙吧
[cpp]
#include
#include
#include
using namespace std;
int num[26];
int main()
int max = num[0];
int index = 0;
for(int i=0;i<26;i++)
} ch = 'a' + index;
cout<
} return 0;
} 16進製制的簡單運算 nyoj 244
傷心的**,我用c++寫了好長,人家兩句讀入輸出,換一下格式ok
scanf("%x%c%x", &a, &c, &b);
if(c == '+')
printf("%o\n", a+b);
if(c == '-')
printf("%o\n", a-b);
[cpp]
#include
#include
using namespace std;
int main()
cout<
for(int i=oper+1;i
cout<
ch = str.at(oper);
if(ch == '+')
else if(ch == '-')
cout<
str = "";
while(num1)
string s(str.rbegin(),str.rend());
cout << s <
} return 0;
} [cpp]
#include
#include
using namespace std;
int main()
return 0;
} 荷蘭國旗問題 nyoj 268
用三個數分別記下三個字母出現的次數,然後依序輸出就行了,他們提供的最優**也是這樣寫的
[cpp]
#include
#include
using namespace std;
int main()
else if(s1.at(i) == 'w')
b++;
else
c++;
} for(int i=0;i
cout<
for(int i=0;icout<
for(int i=0;i
cout<
cout<
} return 0;
} 正三角形的外接圓面積 nyoj 274
看乙個叫做「寶」的仁兄的**,我覺得很好,收集一下:
[cpp]
#include
using namespace std;
#define pi 3.1415926
int main()
return 0;
} 算菜價 nyoj 316
還是「寶」兄的**,不過這次他用了c
[cpp]
#include
int main()
printf("%.1lf\n",sum);
return 0;
}
小光棍數 nyoj 458
第乙個光棍數是471,第二個是1000+471,第三個是2000+471,總之是1000的整倍數加471(我不會證明。。。。)
[cpp]
#include
using namespace std;
int main()
return 0;
} www.2cto.com
[cpp]
#include
#include
using namespace std;
int main()
return 0; } 0
作者:slience_perseverance
位運算的技巧題
位運算非常的巧妙,有時會讓題目的解法非常簡單,但是其技巧性很強,因此這裡自己將一些關於位運算的題目進行了總結。此題的範圍為int32內。因為不能用比較運算,自然的想到位運算,如下的一種常規的解法。1.計算c a b判斷c的正負 2.n 31 1 1 則說明n為負數,否則為正數 int flip in...
nyoj 1170 最大的數(數學技巧)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 小明和小紅在打賭說自己數學學的好,於是小花就給他們出題了,考考他們誰nb,題目是這樣的給你n個數 在這n個數之間新增n 1個 或 使結果最大,但不可以打亂原順序,請得出這個結果 如1 3 5 結果是 1 3 5 20 最大 可以...
nyoj 84 階乘的0(數學技巧)
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 計算n 的十進位制表示最後有多少個0 輸入第一行輸入乙個整數n表示測試資料的組數 1 n 100 每組測試資料佔一行,都只有乙個整數m 0 m 10000000 輸出輸出m的階乘的十進位制表示中最後0的個數 比如5 120則最後...