UVa 1594 解题报告
2017-07-06 13:55
239 查看
简单题 应用set 一遍AC
#include <bits/stdc++.h>
using namespace std;
struct ducci
{
vector<int> v;
bool operator < (const ducci & b)const{
for (int i = 0; i < v.size(); ++i)
if(v[i]<b.v[i])return v[i] < b.v[i];
return false;
}//自己定义小于运算符
};
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T;
cin >> T;
while(T--){
int tot,cnt,ok,ans=1;
cin >> tot;
ducci d;
set<ducci> s;
for (int i = 0; i < tot; ++i){
int x;
cin >> x;
d.v.push_back(x);
}
s.insert(d);
while(1){
int len = d.v.size();
ok=1;
for(int i=0;i<len;i++){//全是0 退出循环
if(d.v[i]!=0){ok=0;break;}
}
if(ok)break;
int x=d.v[0];//注意要先保存第一个数,改了再用会出错
for (int i = 0; i < len-1; ++i)
{
d.v[i]=abs(d.v[i]-d.v[i+1]);
//cout << d.v[i] << " ";
}
d.v[len-1] = abs(d.v[len-1] - x);
//cout << d.v[len-1] << endl;
s.insert(d);
if(s.size()==ans){ok=0;break;}//集合中个数不变视为找到循环退出
else ans++;
}
if(ok) cout << "ZERO" << endl;
else cout << "LOOP" << endl;
}
return 0;
}
原题如下:
A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1; a2; ; an),
the next n-tuple in the sequence is formed by taking the absolute differences of neighboring integers:
(a1; a2; ; an) ! (ja1
#include <bits/stdc++.h>
using namespace std;
struct ducci
{
vector<int> v;
bool operator < (const ducci & b)const{
for (int i = 0; i < v.size(); ++i)
if(v[i]<b.v[i])return v[i] < b.v[i];
return false;
}//自己定义小于运算符
};
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T;
cin >> T;
while(T--){
int tot,cnt,ok,ans=1;
cin >> tot;
ducci d;
set<ducci> s;
for (int i = 0; i < tot; ++i){
int x;
cin >> x;
d.v.push_back(x);
}
s.insert(d);
while(1){
int len = d.v.size();
ok=1;
for(int i=0;i<len;i++){//全是0 退出循环
if(d.v[i]!=0){ok=0;break;}
}
if(ok)break;
int x=d.v[0];//注意要先保存第一个数,改了再用会出错
for (int i = 0; i < len-1; ++i)
{
d.v[i]=abs(d.v[i]-d.v[i+1]);
//cout << d.v[i] << " ";
}
d.v[len-1] = abs(d.v[len-1] - x);
//cout << d.v[len-1] << endl;
s.insert(d);
if(s.size()==ans){ok=0;break;}//集合中个数不变视为找到循环退出
else ans++;
}
if(ok) cout << "ZERO" << endl;
else cout << "LOOP" << endl;
}
return 0;
}
原题如下:
A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1; a2; ; an),
the next n-tuple in the sequence is formed by taking the absolute differences of neighboring integers:
(a1; a2; ; an) ! (ja1
相关文章推荐
- UVA 10494 If We Were a Child Again 解题报告
- uva 489.Hangman Judge 解题报告
- UVa 297 - Quadtrees解题报告
- UVA 10098 Generating Fast 解题报告
- UVa 11100 The Trip, 2007 解题报告(策略)
- 解题报告(二):uva 10029 - Edit Step Ladders(dp+hash)
- 解题报告:UVA11395 Sigma Function 找规律
- UVA 537 解题报告
- UVA 424 解题报告
- UVa 110 Meta-Loopless Sorts 解题报告(暴力)
- UVA 10785 解题报告
- UVa 140 - BandWidth 解题报告(暴力)
- Uva 580 - Critical Mass 解题报告(递推)
- UVAlive 6160 Countdown 解题报告
- UVa第五章STL应用 习题((解题报告))详细!
- URAL 1698||UVA 12009 解题报告
- UVALive 5791 Candy's Candy 解题报告
- UVa 537 - Artificial Intelligence?解题报告
- UVa 465 - Overflow 解题报告
- UVA 10129 Play on Words 解题报告