結果
| 問題 |
No.546 オンリー・ワン
|
| コンテスト | |
| ユーザー |
myanta
|
| 提出日時 | 2017-07-15 00:06:18 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
CE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 907 bytes |
| コンパイル時間 | 232 ms |
| コンパイル使用メモリ | 35,200 KB |
| 最終ジャッジ日時 | 2024-11-14 20:06:54 |
| 合計ジャッジ時間 | 704 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:41:42: error: ‘greater’ was not declared in this scope
41 | sort(c.begin(), c.end(), greater<int>());
| ^~~~~~~
main.cpp:41:50: error: expected primary-expression before ‘int’
41 | sort(c.begin(), c.end(), greater<int>());
| ^~~
main.cpp:38:43: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
38 | for(int i=0;i<n;i++) scanf("%d", &c[i]);
| ~~~~~^~~~~~~~~~~~~
ソースコード
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
using vi=vector<int>;
using ll=long long;
ll gcd(ll a, ll b)
{
ll c;
while((c=a%b))
{
a=b;
b=c;
}
return b;
}
ll lcm(ll a, ll b)
{
return a/gcd(a,b)*b;
}
int main(void)
{
int n, l, h;
while(scanf("%d%d%d", &n, &l, &h)==3)
{
l--;
vi c(n);
for(int i=0;i<n;i++) scanf("%d", &c[i]);
int ans=0;
sort(c.begin(), c.end(), greater<int>());
for(int i=1;i<=n;i++)
{
vi f(n);
for(int j=0;j<i;j++)
{
f[j]=1;
}
do
{
ll t=1;
for(int j=0;j<n;j++)
{
if(f[j]) t=lcm(t, c[j]);
if(t>h) break;
}
if(t<=h)
{
if(i&1) ans+=(h/t-l/t)*i;
else ans-=(h/t-l/t)*i;
}
//for(auto fe:f) printf("%d ", fe);
//printf("\n");
}
while(prev_permutation(f.begin(), f.end()));
//printf("i=%d ans=%d\n", i, ans);
}
printf("%d\n", ans);
}
return 0;
}
myanta