标签:blog io ar os sp for div on log
最近整个人都不太好冏,,这样的题卡成这样。。。可以去死了。。弱成翔了。。。
本人水平太渣,,若各位大神 有更好的算法,求分享。
1.
先找出不同的位置,然后搞
两种情况:
1.juuly july
2.aba ab
胡乱搞搞就好冏
贴代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cstdlib> #include<string> #include<queue> #include<vector> #include<set> using namespace std; #define N 1000010 int t,len1,len2,sum; char s1[N],s2[N]; int main() { scanf("%d",&t); while(t--) { int i=0,j=0,p=0,cnt=0; scanf("%s%s",s1,s2); len1=strlen(s1); len2=len1-1; while(i<len1&&j<len2) { if(s1[i]!=s2[j]) { p=i; cnt++; if(cnt>1) break; i++; } else i++,j++; } if(cnt>1) printf("0\n"); sum=0; if(cnt==0) { for(i=len1-2;i>=0;i--) { if(s1[i]==s1[len1-1]) sum++; else break; } printf("%d\n",sum+1); for(j=i+2;j<=len1-1;j++) printf("%d ",j); printf("%d\n",len1); } else if(cnt==1) { for(i=p-1;i>=0;i--) { if(s1[i]==s1[p]) sum++; else break; } printf("%d\n",sum+1); for(j=i+2;j<=p;j++) printf("%d ",j); printf("%d\n",p+1); } } return 0; }
2.扫了一眼,博弈不太会搞,推了推,原来是斐波那契亚数列。。。写了个判断挂了,,,果断打表QAQ!!!查找用到set,,,自行百度,c++中的STL
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<cstdlib> #include<algorithm> #include<queue> #include<vector> #include<set> using namespace std; long long f[50]={1,1}; int main() { int n; set<long long>s; s.insert(1); for(int i=2;i<50;++i) { f[i]=f[i-1]+f[i-2]; s.insert(f[i]); } int t; scanf("%d",&t); while(t--) { scanf("%d",&n); if(s.find(n)!=s.end()) puts("Alice!"); else puts("Bob!"); } }
3.显然取中点,自己动手模拟下= =
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<cstdlib> #include<algorithm> #include<queue> #include<vector> using namespace std; int t,n,k; long long a[100010],sum; bool cmp(int x,int y) { return x<y; } int main() { scanf("%d",&t); while(t--) { sum=0; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+1+n,cmp); if(n%2==1) k=a[(n+1)/2]; else k=a[n/2]; for(int i=1;i<=n;i++) sum+=abs(a[i]-k); printf("%lld\n",sum); } return 0; }
4.额,,读一个数,读一个字符。。找出*的,不用管加号,最后扫一遍累加就好了= =,,,特么 在读入 上纠结 冏,,,真是弱爆了。。。。。。。。
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<cstdlib> #include<algorithm> #include<queue> #include<vector> #include<iostream> using namespace std; long long num[100000]; char s[100000]; long long i; int t; int main() { scanf("%d",&t); while(t--){ memset(num,0,sizeof(num)); cin>>num[1]; long long l=1,ans=0; while(scanf("%c",&s[l])) { if (s[l]==‘\n‘) break; l++; cin>>num[l]; num[l]%=10000; } l--; for(i=1;i<=l;i++) if(s[i]==‘*‘) { num[i+1]=num[i]*num[i+1]; num[i]=0; num[i+1]%=10000; } for(i=1;i<=l+1;i++)ans+=num[i]; cout<<ans%10000<<endl; } return 0; }
5.高精度乘法,直接上模板,,找个好的模板真费劲,以后 要自己好好弄模板冏= =
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<cstdlib> #include<algorithm> #include<queue> #include<vector> #include<stdio.h> #include<string.h> void choose(char q[]) { int i,ll; char tmp; ll=strlen(q); for(i=0;i<ll/2;i++) { tmp=q[i];q[i]=q[ll-i-1];q[ll-i-1]=tmp; } } void fun(char a[],char b[],char c[],int n) { int i,j,jinw=0,x,y,z; int l1,l2,l3; choose(a); choose(b); l1=strlen(a); l2=strlen(b); for(i=0;i<=l1+l2;i++) c[i]=0; for(i=0;i<l2;i++) { for(j=0;j<l1;j++) { x=b[i]-‘0‘; y=a[j]-‘0‘; z=x*y; if(jinw) z+=jinw; if(z>9) { jinw=z/10; z%=10; } else jinw=0; c[i+j]+=z; } } if(jinw) { for(i=0;i<l1+l2-1;i++) c[i]+=‘0‘; c[l1+l2-1]+=jinw+‘0‘; } else { for(i=0;i<l1+l2-1;i++) c[i]+=‘0‘; } for(i=0;i<strlen(c);i++) { if(c[i]>‘9‘) { c[i]-=‘0‘; jinw=c[i]/10; c[i]%=10; c[i]+=‘0‘; c[i+1]+=jinw; } } l3=strlen(c); c[l3]=‘\0‘; printf("Case %d:\n",n); for(i=l1-1;i>=0;i--) printf("%c",a[i]); printf(" * "); for(i=l2-1;i>=0;i--) printf("%c",b[i]); printf(" = "); for(i=strlen(c)-1;i>=0;i--) printf("%c",c[i]); printf("\n\n"); } int main() { int n,m; char a[200],b[200],c[2000]; while(scanf("%d",&n)!=EOF) { m=n; while(n--) { scanf("%s%s",a,b); fun(a,b,c,m-n); } } return 0; }
多想想,多想想,多想想。
一直饿着肚子,冏。。。写完去吃饭了QAQ。。。
标签:blog io ar os sp for div on log
原文地址:http://www.cnblogs.com/a972290869/p/4101491.html