a.
题解:水题,判断该数模除10 ,与10 - 该数模除10 比较谁更小,输出小的那种情况
代码如下:
#include <iostream>
#include <stdio.h>
#include <stack>
#include <math.h>
#include <map>
#include <algorithm>
#include <string.h>
using namespace std;
const double PI=acos(-1);
int main()
{
int n;
scanf("%d",&n);
int m=n%10;
if(m<=10-m)
printf("%d\n",n-m);
else
printf("%d\n",n+10-m);
return 0;
}
b .
题意: 扩展欧几里德 ,但一直改不对,发现 数据最大1e7 1000ms 不会超时,故用暴力 ac
代码如下:
#include <iostream>
#include <stdio.h>
using namespace std;
typedef long long ll;
void gcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if(!b)
{
d=a;x=1;y=0;
}
else
{
gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
}
int main()
{
ll n,a,b,x,y,g;
cin>>n>>a>>b;
gcd(a,b,g,x,y);
if(n%g)
puts("NO");
else
{
int flag=1;
if(n%a==0)
{
puts("YES");
printf("%I64d 0\n",n/a);
}
else if(n%b==0)
{
puts("YES");
printf("0 %I64d\n",n/b);
}
else
{
for(ll i=1;i<=10000000;i++) // main code
{
if((n-a*i)>=0&&(n-a*i)%b==0)
{
puts("YES");
printf("%I64d %I64d\n",i,(n-a*i)/b);
flag=0;
break;
}
}
if(flag)
puts("NO");
}
}
return 0;
}
c
题解:
更是暴力,可以直接开数组暴力,但我用的set 和 map 优化了一下,将 那些字符串判断一下不是任何字符串的后缀 即可
代码如下:
#include <iostream>
#include <set>
#include <map>
#include <string.h>
#include <vector>
using namespace std;
int lk(string str,string str1) // 判断str 是否是str1的后缀
{
int len=str.length(),len1=str1.length();
if(len>=len1)
return 0;
for(int i=0;i<len;i++)
if(str[len-1-i]!=str1[len1-1-i])
return 0;
return 1;
}
int main()
{
set<string>s;
map<string,set<string> >my;
s.clear();
int n,m;
string name,str;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>name>>m;
s.insert(name);
for(int j=0;j<m;j++)
{
cin>>str;
my[name].insert(str);
}
}
cout<<s.size()<<endl;
set<string>::iterator it1;
set<string>::iterator it2;
vector<string>v1;
vector<string>v2;
for(it1=s.begin();it1!=s.end();it1++)
{
v1.clear();
v2.clear();
cout<<*it1<<" ";
for(it2=my[*it1].begin();it2!=my[*it1].end();it2++)
v1.push_back(*it2);
for(int i=0;i<v1.size();i++)
{
int flag=0;
for(int j=0;!flag&&j<v1.size();j++)
if(i!=j)
{
if(lk(v1[i],v1[j]))
flag=1;
}
if(!flag)
v2.push_back(v1[i]);
}
cout<<v2.size()<<" ";
for(int i=0;i<v2.size();i++)
{
if(i==v2.size()-1)
cout<<v2[i]<<endl;
else
cout<<v2[i]<<" ";
}
}
return 0;
}
init:看样子以后要首选lk暴力试探法啦。。。。。。