本文主要是介绍2016东莞市特长生考试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前传,本人真的是lalala,自己的代码竟然在同一个栏里编辑,保存的时候重新从硬盘读取,结果就,呵呵。
不过后面改了一下,大概是220pts,感觉自己还是很la。
15
22555255552855530000
就是一道简单的模拟题(这里就不讲思路了)
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int n,f; bool fj(int x) {int n1=x/100,n2=x/10-(x/10000)*1000,n3=x%1000;if(n1%n==0&&n2%n==0&&n3%n==0) return true;return false; } int main() {freopen("num.in","r",stdin);freopen("num.out","w",stdout);scanf("%d",&n);for(int i=10000;i<=30000;i++){if(fj(i)) printf("%d\n",i),f=1;}if(!f) printf("-1");return 0; }
10 3 4 5
5
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define ll long long
using namespace std;
ll n, m, k, x;
ll power(ll a, ll b)
{ll Ans = 1;a %= n;while(b){if(b & 1)Ans = Ans * a % n; a = a * a % n;b >>= 1;}return Ans;
}
int main()
{freopen("game.in","r",stdin)freopen("game.out","w",stdout)scanf("%lld%lld%lld%lld", &n, &m, &k, &x);printf("%lld", (power(10, k) * m + x) % n);return 0;
}
思路:快速幂一下就好了。
cmcsnmn2
10
#include<iostream> #include<cstdio> #include<cmath> using namespace std; string s1,s2; int k,len1,len2; int f[4010][4010]; int min1(int a,int b,int c) {return min(a,min(b,c)); } int main() {//freopen("blast.in","r",stdin);//freopen("blast.out","w",stdout);cin>>s1>>s2;scanf("%d",&k);len1=s1.size(),len2=s2.size();for(int i=1;i<=len1;i++) f[i][0]=f[i-1][0]+k;for(int i=1;i<=len2;i++) f[0][i]=f[0][i-1]+k;for(int i=1;i<=len1;i++)for(int j=1;j<=len2;j++)f[i][j]=min1(f[i-1][j-1]+abs(s1[i-1]-s2[j-1]),f[i-1][j]+k,f[i][j-1]+k);printf("%d",f[len1][len2]);return 0; }
4 51 2 3 40 2 12 3 13 1 22 1 40 3 542 0 20 1 20 1 30 1 4
-1-154
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n,m;
int r[201][201],top,len,q;
bool v1[201];
const int N=1e9;
struct str
{int w,id;
}v[201];
bool cmp(str a,str b)
{return a.w<b.w;
}
void update(int e)
{for(int i=0;i<=n-1;i++)for(int j=0;j<=n-1;j++)if(r[i][e]+r[e][j]<r[i][j]) r[i][j]=r[i][e]+r[e][j];
}
int main()
{freopen("rebuild.in","r",stdin);freopen("rebuild.out","w",stdout);scanf("%d%d",&n,&m);for(int i=0;i<=n-1;i++)for(int j=0;j<=n-1;j++) r[i][j]=N;for(int i=1;i<=n;i++) scanf("%d",&v[i].w),v[i].id=i-1,r[i][i]=0;sort(v+1,v+n+1,cmp);for(int i=1,x,y,z;i<=m;i++){scanf("%d%d%d",&x,&y,&z);r[x][y]=z,r[y][x]=z;}scanf("%d",&q);for(int i=1,x,y,t;i<=q;i++){scanf("%d%d%d",&x,&y,&t);while(v[len+1].w<=t&&len<n) {++len,v1[v[len].id]=1;update(v[len].id);}if(v1[x]&&v1[y]&&r[x][y]!=N) printf("%d\n",r[x][y]);else printf("-1\n");} return 0;
}
思路:由于提问时间严格递增的,所以我们可以一个点一个点插入去做,然后再加上路是否可以走通的判断就可以了,总共加起来其实就做了一次floyd。
这篇关于2016东莞市特长生考试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!