/*************************************************************************************************** Anzmaul Haque Akash DIU, Daffodil International University E-mail: anzamul15-2297@diu.edu.bd Youtube: https://www.youtube.com/channel/UCXvXHUkxyLYKeQkIg_RyMBw******************************************************************************************************/ #include<bits/stdc++.h> #define ln (int)1e6 #define pi acos(-1.0) #define pb push_back #define pf push_front 1 #define mp make_pair #define F first #define S second #define INF 1000000000000000000 #define LES -1000000000000000000 #define intlim 2147483648 #define ll long long #define ull unsigned long long #define str string #define in insert #define all(akash) akash.begin(),akash.end() #define ms(arr) memset(arr,0,sizeof(arr)) #define msbooltrue(arr) memset(arr,true,sizeof(arr)) #define msboolfalse(arr) memset(arr,false,sizeof(arr)) #define msINF(arr) memset(arr,INF,sizeof(arr)) #define case1(cs) cout<<"Case "<<cs<<": " #define case2(cs) cout<<"Case "<<cs<<":\n" #define lb cout<<"\n"; #define vec vector #define qu queue #define li list #define pq priority_queue #define em empty #define fori(i,a,b) for(int i=0;i<b;i++) #define ford(i,a,b) for(int i=b-1;i>=0;i--) #define forc(ch); for(char ch:str) #define sc1(a) scanf("%lld",&a) #define sc2(a,b) scanf("%lld %lld",&a,&b) #define sc3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c) #define sc4(a,b,c,d) scanf("%lld %lld %lld %lld",&a,&b,&c,&d) #define sc5(a,b,c,d,e) scanf("%lld %lld %lld %lld %lld",&a,&b,&c,&d,&e) using namespace std; void solve(ll n){ ll temp_n=n; temp_n--; for(ll i=0; i<n-1; i++){ cout<<"("; } cout<<"sin(1)+"<<n<<")"; //Segment 1. str s="sin(1-sin("; // if n>1 this one is using for the template. for(ll i=2;i<=n;i++){ //main loop. str temp; temp.clear(); temp=s; for(ll x=2; x<i;x++){ //This one creat middle of Every part. if(x%2==0){ //' + ' for even ' - ' for odd. temp+=to_string(x); temp+="+sin("; } else{ temp+=to_string(x); temp+="-sin("; } } temp+=to_string(i); for(ll y=1;y<=i;y++){ //for closing ' ) ' every equation. temp+=")"; } cout<<temp; //print each segment. if(temp_n > 1){ cout<<"+"<<temp_n<<")"; //Printing every segment last digit with out 1. } temp_n--; } cout<<"+1";lb//This one for end. } int main() { ll n; sc1(n); if(n>1){ solve(n); //solve function. } else if(n==1){ cout<<"sin(1)+1";lb //for 1. } return 0; } 0 1 sin(1)+1 2 (sin(1)+2)sin(1-sin(2))+1 3 ((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1 4 (((sin(1)+4)sin(1-sin(2))+3)sin(1-sin(2+sin(3)))+2)sin(1-sin(2+sin(3-sin(4))))+1 5 ((((sin(1)+5)sin(1-sin(2))+4)sin(1-sin(2+sin(3)))+3)sin(1-sin(2+sin(3-sin(4))))+2)sin(1-sin(2+sin(3-sin(4+sin(5)))))+1 6 (((((sin(1)+6)sin(1-sin(2))+5)sin(1-sin(2+sin(3)))+4)sin(1-sin(2+sin(3-sin(4))))+3)sin(1-sin(2+sin(3-sin(4+sin(5)))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+1 7 ((((((sin(1)+7)sin(1-sin(2))+6)sin(1-sin(2+sin(3)))+5)sin(1-sin(2+sin(3-sin(4))))+4)sin(1-sin(2+sin(3-sin(4+sin(5)))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+1 8 (((((((sin(1)+8)sin(1-sin(2))+7)sin(1-sin(2+sin(3)))+6)sin(1-sin(2+sin(3-sin(4))))+5)sin(1-sin(2+sin(3-sin(4+sin(5)))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+1 9 ((((((((sin(1)+9)sin(1-sin(2))+8)sin(1-sin(2+sin(3)))+7)sin(1-sin(2+sin(3-sin(4))))+6)sin(1-sin(2+sin(3-sin(4+sin(5)))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+1 10 (((((((((sin(1)+10)sin(1-sin(2))+9)sin(1-sin(2+sin(3)))+8)sin(1-sin(2+sin(3-sin(4))))+7)sin(1-sin(2+sin(3-sin(4+sin(5)))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+1 wtf is this code lol also, why share code in the discussion section you shame of bangladesh!!! you're supposed to discuss here, not share code! also this problem is very easy, was no need to share code. My program worked correctly on N in 1 to 9, and incorrectly on numbers greater than 9 (error in string concatenation). I kept getting an error on test 2 until I fixed the error. Apparently, in test 2, the input is a number greater than 10. Try this test: in: 11 out: ((((((((((sin(1)+11)sin(1-sin(2))+10)sin(1-sin(2+sin(3)))+9)sin(1-sin(2+sin(3-sin(4))))+8)sin(1-sin(2+sin(3-sin(4+sin(5)))))+7)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10+sin(11)))))))))))+1 I have written the code the using user defined function thats why it has become much bigger. #include<Stdio.h> #include<math.h> int Sn(int n); int An(int a); int main() { int x; scanf("%d",&x); Sn(x); } int Sn(int n) { int j; if(n==1) {An(1); printf("+1");} else { for(j=1;j<n;j++) printf("("); for(j=1;j<=n;j++) {if(j==1) {An(j);printf("+%d)",n);} else if(j!=n) {An(j);printf("+%d)",n-j+1);} else {An(j);printf("+1");}}} } int An(int a) { int i,p; if(a==1) printf("sin(%d)",a); else {for(i=1;i<=a;i++) { p= pow(-1,i+1); if(i==1) printf("sin(%d",i); else if(p==1) printf("+sin(%d",i); else printf("-sin(%d",i);} for(i=0;i<a;i++) printf(")"); } } Edited by author 29.10.2020 21:19 #include<bits/stdc++.h> using namespace std; void prin ( int i) { int j; for ( j =1 ; j <= i ;j++) { cout << "sin(" << j; if ( j == i){ for (j = 0 ; j<i ; j ++) cout <<")"; break;} else { if (j%2) cout << "-"; else cout << "+"; } } } int main() { int i,j,n; cin >> n; int k = n; for (i = 1; i < n ;i++) cout << "("; for ( i = 1 ; i <= n ; i++,k--) { prin(i); if (i!= n) cout << "+"<<k<<")"; } cout << "+1\n"; return 0; } Don't forget to make an endline in your pretty code.... #include <bits/stdc++.h> int main() { int n,i,j,k; scanf("%d",&n); for(i=1; i<=n; i++){ if(i==1 && n!=1){ printf("("); } for(j=1; j<=i; j++){ if(i==1 && n==i){ printf("(sin(1))+%d",n); } else if(i==1){ printf("(sin(1)+%d)",n); } else { if(j%2==0){ printf("-sin(%d",j); } else if(j==1){ printf("sin(%d",j); } else { printf("+sin(%d",j); } if(j==i){ //printf(")"); for(k=1; k<=i; k++){ printf(")"); } } } } //if(i==n){ // printf(")"); // } if(i!=1 && i!=n){ printf("+%d)",n+1-i); } else if(i!=1 && i==n){ printf("+%d",n+1-i); } } return 0; } using System; class Test { public static void Main() { String strB = ""; String strA = ""; int num = Convert.ToInt32(Console.ReadLine()); int b = 1; for (int a = num; a > 0; a--) { strA = StrAMaker(a); strB = ')' + strA + '+' + b + strB; b++; } string s3 = new string('(', --num); strB = s3 + strB.TrimStart(')'); Console.WriteLine(strB); } public static string StrAMaker (int a) { string s1 = new string(')', a); String s2 = ""; for (int i = 1; i <= a; i++) { if (i % 2 == 0) { s2 = s2 + "sin(" + i + "+"; if (i == a) s2 = s2.TrimEnd('+') + s1; } else { s2 = s2 + "sin(" + i + "-"; if (i == a) s2 = s2.TrimEnd('-') + s1; } } return s2; } } my code: #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; typedef pair<string , string> pss; #define all(x) (x).begin(),(x).end() #define Sort(x) sort(all((x))) #define F first #define S second #define sep ' ' #define file_io freopen("input.txt" , "r+" , stdin) ; freopen("output.txt" , "w+" , stdout); #define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define error(x) cerr << "$$$ " << x << '\n'; #define error2(x,y) cerr << "#F : " << x << " #S : " << y << '\n'; #define pb push_back const ll MX5 = 3*1e5+3; const ll MX6 = 2*1e6+3; const ll INF = 8e18; const ll MOD = 1e9 + 7; const ll MOD2= 998244353; ll power(ll a, ll b, ll md) { return (!b ? 1 : (b & 1 ? a * power(a * a % md, b / 2, md) % md : power(a * a % md, b / 2, md) % md)); } ll bmm(ll a,ll b){ return (a%b==0 ? b : bmm(b,a%b)); } ll A[MX5]; string num(ll n){ string ans=""; while(n){ ans=(char)(n%10+'0')+ans; n/=10; } return ans; } string An(ll t,ll n){ string a=num(t); if(t==n){ return "sin("+a+")"; } if(t%2==1){ return "sin("+a+"-"+An(t+1,n)+")"; } return "sin("+a+"+"+An(t+1,n)+")"; } string Sn(ll t,ll n){ string a=num(n-t+1); if(t==1){ return An(1,1)+"+"+a; } return "("+Sn(t-1,n)+")"+An(1,t)+"+"+a; } int main(){ fast_io //file_io ll n; cin >> n; string answer=Sn(n,n); cout << answer; return 0; } Edited by author 12.08.2019 13:01 i find out its because of language of compiler use G++ 7.1 for c++ :) #include<iostream> using namespace std; void sin (int n,int i) { if(i==n+1) return ; else { if(i==1) { cout<<"sin("<<i; sin(n,i+1); } else if(i%2==1) { cout<<"+sin("<<i; sin(n,i+1); } else { cout<<"-sin("<<i; sin(n,i+1); } cout<<")"; } } void sol( int n,int i) { if(i==n) return; if(i==1) for(int i=1;i<n;i++) cout<<'('; sin(i,1); cout<<'+'<<n-i+1<<')'; sol(n,i+1); if(i==1) { sin(n,1); cout<<"+1"; } } int main () { int n; cin>>n; sol(n,1); } i have some problems with (), please give answers for some other cases 1 Edited by author 06.11.2015 00:47 Input: 4 Output: (((sin(1)+4)sin(1-sin(2))+3)sin(1-sin(2+sin(3)))+2)sin(1-sin(2+sin(3-sin(4))))+1 I thought i'll never get AC at this problem, but after some time i wrote that very nice (as for me ^___^) functions doing the work. void a( int n, int k ) { -printf("sin(%d",k); -if ( k < n ) -{ --if ( k % 2 ) ---printf("-"); --else ---printf("+"); --a( n, k + 1 ); -} -printf(")"); } void s( int n, int k ) { -if ( k < n ) -{ --printf("("); --s( n, k + 1 ); --printf(")"); -} -a( n - k + 1, 1 ); -printf("+%d",k); } For answer just need to call s( n, 1 ). Good luck! Edited by author 20.03.2010 18:23 void s(int n, int k) { printf("sin(%d",k); if (n!=k) { putchar(((k&1)<<1)+43); s(n,++k); } putchar(')'); } void p(int n, int k) { if (k>1) { putchar('('); p(n,k-1); } s(k,1); printf("+%d",n+1-k); if (k<n) putchar(')'); } my algorithm... for answer p(n,n) Thanks, I was stuck in the recursion for Sn. :) Here is my code: # include <bits/stdc++.h> using namespace std; string s[300]; string conv(int x) { string str; while(x) { str.push_back(x % 10 + '0'); x /= 20; } reverse(str.begin(), str.end()); return str; } int main() { int n; cin >> n; for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { s[i] += "sin(" + conv(j); if(j != i) { if(j % 2) s[i].push_back('-'); else s[i].push_back('+'); } } for(int j = 1; j <= i; j++) s[i].push_back(')'); } for(int i = 1; i < n; i++) cout << '('; for(int i = 1; i <= n; i++) { cout << s[i] << '+' << n - i + 1; if(i != n) cout << ')'; } cout << endl; return 0; } Edited by author 13.11.2015 09:37 Edited by author 13.11.2015 09:37 Here you go. 9 ((((((((sin(1)+9)sin(1-sin(2))+8)sin(1-sin(2+sin(3)))+7)sin(1-sin(2+sin(3-sin(4))))+6)sin(1-sin(2+sin(3-sin(4+sin(5)))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+1 11 ((((((((((sin(1)+11)sin(1-sin(2))+10)sin(1-sin(2+sin(3)))+9)sin(1-sin(2+sin(3-sin(4))))+8)sin(1-sin(2+sin(3-sin(4+sin(5)))))+7)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10+sin(11)))))))))))+1 thank you very much! you help me a lot! At first I thought I was getting WA's because of the wrong minus sign. Actual reason was printing integers. I was trying to print integers using just PUTCHAR. Of course it worked fine for 0-9. And was failing for other numbers. Maybe correct name for that problem is "SINE dance"? "Sinus" is something about anathomy. #include <iostream> #include <cstdlib> #include <string> using namespace std; string S, A; unsigned short An = 1; bool negative = true; void get_next_A(); void get_S(unsigned short); int main() { unsigned short input_n; cin >> input_n; get_S(input_n); cout << S << endl; return 0; } void get_next_A() { if(An == 1) A = "sin(1)"; else { A.erase(A.size() - An + 1, An); if(negative) A += "-sin("; else A += "+sin("; char buffer[5]; itoa(An, buffer, 10); A += buffer; for(unsigned short j = 0; j < An; ++j) A += ")"; negative = !negative; } ++An; return; } void get_S(unsigned short n) { char _buffer[10]; for(unsigned short i = 0; i < n - 1; ++i) S += '('; for(unsigned short i = n; i > 0; --i) { get_next_A(); itoa(i, _buffer, 10); S += A; S += '+'; S += _buffer; if(i != 1) S += ')'; } return; } You can make it simpler :) For example, here is the function generating sine expressions: string get_sine_expression(int x, int n) { if (x == n) return "sin(" + to_string(x) + ")"; char sign = x & 1 ? '-' : '+'; return "sin(" + to_string(x) + sign + get_sine_expression(x + 1, n) + ")"; } ((((((((((sin(1)+11)sin(1-sin(2))+10)sin(1-sin(2+sin(3)))+9)sin(1-sin(2+sin(3-si n(4))))+8)sin(1-sin(2+sin(3-sin(4+sin(5)))))+7)sin(1-sin(2+sin(3-sin(4+sin(5-sin (6))))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+5)sin(1-sin(2+sin(3- sin(4+sin(5-sin(6+sin(7-sin(8))))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin( 7-sin(8+sin(9)))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-s in(10))))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10+s in(11)))))))))))+1 When N = 11 Программа почему-то постоянно дает сбой на 2-ом тесте, но так как явные ошибки в коде не обнаружены, может просто я не понял условие? 0 1 sin(1)+1 2 (sin(1)+2)sin(1-sin(2))+1 3 ((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1 4 (((sin(1)+4)sin(1-sin(2))+3)sin(1-sin(2+sin(3)))+2)sin(1-sin(2+sin(3-sin(4))))+1 5 ((((sin(1)+5)sin(1-sin(2))+4)sin(1-sin(2+sin(3)))+3)sin(1-sin(2+sin(3-sin(4))))+2)sin(1-sin(2+sin(3-sin(4+sin(5)))))+1 6 (((((sin(1)+6)sin(1-sin(2))+5)sin(1-sin(2+sin(3)))+4)sin(1-sin(2+sin(3-sin(4))))+3)sin(1-sin(2+sin(3-sin(4+sin(5)))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+1 7 ((((((sin(1)+7)sin(1-sin(2))+6)sin(1-sin(2+sin(3)))+5)sin(1-sin(2+sin(3-sin(4))))+4)sin(1-sin(2+sin(3-sin(4+sin(5)))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+1 8 (((((((sin(1)+8)sin(1-sin(2))+7)sin(1-sin(2+sin(3)))+6)sin(1-sin(2+sin(3-sin(4))))+5)sin(1-sin(2+sin(3-sin(4+sin(5)))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+1 9 ((((((((sin(1)+9)sin(1-sin(2))+8)sin(1-sin(2+sin(3)))+7)sin(1-sin(2+sin(3-sin(4))))+6)sin(1-sin(2+sin(3-sin(4+sin(5)))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+1 10 (((((((((sin(1)+10)sin(1-sin(2))+9)sin(1-sin(2+sin(3)))+8)sin(1-sin(2+sin(3-sin(4))))+7)sin(1-sin(2+sin(3-sin(4+sin(5)))))+6)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6))))))+5)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7)))))))+4)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8))))))))+3)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9)))))))))+2)sin(1-sin(2+sin(3-sin(4+sin(5-sin(6+sin(7-sin(8+sin(9-sin(10))))))))))+1 Блин. Все понял. Очень, очень и еще раз очень глупая ошибка. Edited by author 03.02.2016 00:55 Found the mistake :) Edited by author 09.07.2015 01:22 #include<stdio.h> main() { int n,i,j; scanf("%i",&n); for(i=1;i<n;i++) printf("("); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { if(j>1) printf((j&1)?"+":"-"); printf("sin(%i",j); } for(j=1;j<=i;j++)printf(")"); printf("+%i",n+1-i); if(i!=n)printf(")"); } } A concise code. Much better than mine. |
|