c语言cin改scanf,我的代码用scanf输入wa了,改成cin就ac了 ?
cin的代碼
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
#define?mod?1000000007
#define?inf?0x3f
#define?ll?long?long
//#define?ls?i<<1
//#define?rs?i<<1|1
#define?pi?3.1415926
#define?maxn?200005
ll?dp[105][105];
int?main()
{
string?s1,s2;
ll?n1,n2;
while(cin>>s2>>n2>>s1>>n1)
{
int?flag=0;
ll?l1=s1.size();
ll?l2=s2.size();
if(n1==0||n2==0||l1==0||l2==0||n2*l2>n1*l1)
{
printf("0\n");
continue;
}
for(ll?i=0;?i
{
ll?k=1;//k是字符總數
for(ll?j=0;?j
{
ll?cnt=0;//cnt是找一個字符需要幾個字符
while(s1[(i-1+k+cnt)%l1]!=s2[j])
{
cnt++;
if(cnt>l1){?printf("0\n");?flag=1;?break;}//如果s1中沒有s2[j]?答案為0
}
if(flag==1)?break;
cnt++;
k+=cnt;
}
if(flag==1)?break;
dp[i][0]=k-1;
}
if(flag==1)?continue;
ll?cnt=0;
for(ll?j=1;?(1<
{
cnt=j;
for(int?i=0;?i
{
dp[i][j]=dp[i][j-1]+dp[(i+dp[i][j-1])%l1][j-1];//通過倍增求從s1[i]開始找(1<
}
}
ll?ans=0,tail=0,sum=0;
for(ll?i=cnt;i>=0;i--)//用二進制合成最多s2
{
if(ans+dp[tail][i]<=l1*n1)
{
ans+=dp[tail][i];//字符個數
sum+=1<
tail=ans%l1;//當前字符尾端的位置
}
}
printf("%lld\n",sum/n2);
}
return?0;
} scanf的代碼
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
#define?mod?1000000007
#define?inf?0x3f
#define?ll?long?long
//#define?ls?i<<1
//#define?rs?i<<1|1
#define?pi?3.1415926
#define?maxn?200005
ll?dp[105][105];
int?main()
{
char?s1[105],s2[105];
ll?n1,n2;
while(scanf("%s%lld%s%lld",s2,&n2,s1,&n1)!=EOF)
{
int?flag=0;
ll?l1=strlen(s1);
ll?l2=strlen(s2);
if(n1==0||n2==0||l1==0||l2==0||n2*l2>n1*l1)
{
printf("0\n");
continue;
}
for(ll?i=0;?i
{
ll?k=1;//k是字符總數
for(ll?j=0;?j
{
ll?cnt=0;//cnt是找一個字符需要幾個字符
while(s1[(i-1+k+cnt)%l1]!=s2[j])
{
cnt++;
if(cnt>l1){?printf("0\n");?flag=1;?break;}//如果s1中沒有s2[j]?答案為0
}
if(flag==1)?break;
cnt++;
k+=cnt;
}
if(flag==1)?break;
dp[i][0]=k-1;
}
if(flag==1)?continue;
ll?cnt=0;
for(ll?j=1;?(1<
{
cnt=j;
for(int?i=0;?i
{
dp[i][j]=dp[i][j-1]+dp[(i+dp[i][j-1])%l1][j-1];//通過倍增求從s1[i]開始找(1<
}
}
ll?ans=0,tail=0,sum=0;
for(ll?i=cnt;i>=0;i--)//用二進制合成最多s2
{
if(ans+dp[tail][i]<=l1*n1)
{
ans+=dp[tail][i];//字符個數
sum+=1<
tail=ans%l1;//當前字符尾端的位置
}
}
printf("%lld\n",sum/n2);
}
return?0;
}
總結
以上是生活随笔為你收集整理的c语言cin改scanf,我的代码用scanf输入wa了,改成cin就ac了 ?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言switch中用ifelse,初学
- 下一篇: c语言每个整数占9列,c语言 第五章 数