VerySecureEncryption 模拟

题意:

给你个串message,然后一个置换key,输出置换K次后的结果。

题解:

直接模拟就好。

代码:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std; class VerySecureEncryption {
public:
string encrypt(string message, vector<int> key, int K) {
char res[][];
for (int i = ; i < message.length(); i++)res[][i] = message[i];
for (int i = ; i < K; i++)
for (int j = ; j < message.length(); j++)
res[i & ][key[j]] = res[(i + ) & ][j];
string r;
for (int i = ; i < message.length(); i++)
r = r + res[(K - ) & ][i];
return r;
}
};

IsItASquare 计算几何

题意:

给你平面上四个点,问你是否能够构成正方形

题解:

取三个点,看是否能够构成等腰直角三角形,然后再check一下最后一个点。

代码:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std; class Coordinate
{
public:
double xCoordinate;
double yCoordinate; Coordinate(double x = ,double y = )
{
this->xCoordinate = x;
this->yCoordinate = y;
} bool operator!=(Coordinate const &comp) const
{
return (this->xCoordinate != comp.xCoordinate ||
this->yCoordinate != comp.yCoordinate);
}
}; /**
* @explanation 判断是否为等腰直角三角形.
*/
bool Judge(Coordinate const x,Coordinate const y,Coordinate const z)
{
Coordinate *mVector = new Coordinate(x.xCoordinate - y.xCoordinate,
x.yCoordinate - y.yCoordinate);
Coordinate *nVector = new Coordinate(z.xCoordinate -
(x.xCoordinate + y.xCoordinate)/,
z.yCoordinate -
(x.yCoordinate + y.yCoordinate)/);
//判断是否为等腰三角形
bool result = ((mVector->xCoordinate * nVector->xCoordinate +
mVector->yCoordinate * nVector->yCoordinate) == ); //判断是否是直角三角形
if(result)
result = (mVector->xCoordinate * mVector->xCoordinate +
mVector->yCoordinate * mVector->yCoordinate)
== ((nVector->xCoordinate * nVector->xCoordinate +
nVector->yCoordinate * nVector->yCoordinate) * ); delete mVector;
delete nVector; return result;
} bool IsSquare(Coordinate *array,int length)
{
if(length != )
return false;
int a,b,c; if(Judge(array[],array[],array[]))
{
a = ;
b = ;
c = ;
}
else if(Judge(array[],array[],array[]))
{
a = ;
b = ;
c = ;
}
else if(Judge(array[],array[],array[]))
{
a = ;
b = ;
c = ;
}
else
return false; return (array[] != array[c] && Judge(array[a],array[b],array[]));
} class IsItASquare {
public:
string isSquare(vector <int> x, vector <int> y) {
Coordinate ar[];
for(int i=;i<;i++)ar[i].xCoordinate=x[i],ar[i].yCoordinate=y[i];
return IsSquare(ar,)?"It's a square":"Not a square";
}
};

AnArra 乱搞

题意:

给你个序列A,统计A[i]*A[j]*A[k]%K==0的个数,i<j<k

题解:

采用存一半搜一半的思想,预处理出每个因子有多少倍数。然后枚举A[i],A[j],令g=gcd(A[i]*A[j],K),t=K/g,那么问题就是有多少数是t的倍数,这个刚刚已经预处理好了。

代码:

#include<iostream>
#include<map>
#include<algorithm>
using namespace std; typedef long long ll; int ma[]; ll gcd(ll a,ll b) {
return b == ? a : gcd(b, a % b);
} class AnArray {
public:
int solveProblem(vector<int> A, int K) {
for (auto a:A) {
for (int i = ; i * i <= a; i++) {
if (a % i == ) {
ma[i]++;
int t = a / i;
if (i * i != a && t <= )ma[t]++;
}
}
}
ll res = ;
for (int i = ; i < A.size(); i++)
for (int j = ; j < A.size(); j++) {
if (i == j)continue;
ll tmp = ;
tmp = tmp * A[i] * A[j];
int g = gcd(tmp, K);
int t = K / g;
res = res + ma[K / g];
if (A[i] % t == )res--;
if (A[j] % t == )res--;
}
return res / ;
}
};

最新文章

  1. git简易操作
  2. C#并行编程-线程同步原语
  3. XtraBackup2.3.3安装配置使用(innobakupex)
  4. Scrum Meeting---Nine(2015-11-4)
  5. 微信公众平台Token验证失败的解决办法
  6. javascript MD5加密
  7. jquery 获取多个dom对象的方法
  8. 使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP注意事项
  9. Journey
  10. 分析NGINX 健康检查和负载均衡机制
  11. Mybatis 中一对多,多对一的配置
  12. addTarget:self 的意思是说,这个方法在本类中
  13. 第六届SD省赛 Circle of Friends
  14. angularjs优化方略
  15. windows 性能监视器
  16. vSphere ESXi 重新安装后的虚拟机恢复(转载)
  17. OC图片滑动验证
  18. Python中cPickle
  19. TextRank算法
  20. 记录一次OOM分析过程

热门文章

  1. hadoop 启动or运行mr错误
  2. Codeforces 653G Move by Prime 组合数学
  3. luogu4169 [Violet]天使玩偶/SJY摆棋子 / bzoj2648 SJY摆棋子 k-d tree
  4. User Account Control
  5. Spring Boot 学习系列(03)—jar or war,做出你的选择
  6. Marketing learning-2
  7. PAT1038(两个运行超时 未解决
  8. 求解Catalan数,(大数相乘,大数相除,大数相加)
  9. Ethernet,token ring,FDDI,ATM,WLAN
  10. [Gym101138G][容斥原理]LCM-er